python --- 20 约束 异常处理 MD5 日志
一.类的约束
1.抛出异常 NotImplementedError
2.抽象方法
含有抽象方法的类是抽象类
抽象类中的方法全是抽象方法的是接口
抽象类不能创建对象
二.异常处理
处理完后代码可继续运行
所有异常的根是Exception
1.基本语法
2.自定义异常 (继承Exception异常的根)
自定义异常 加 异常处理
3.堆栈信息(显示错误信息的具体位置)
需引入模块
三.MD5加密 不可逆
固定格式:
应用:
四.日志
1.
# 基本的日志框架
import logging import traceback logging.basicConfig(filename='x1.txt', format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=40) def login(): try: print("登录验证") print(1/0) except Exception as e: logging.error(traceback.format_exc()) login()
2.⼀个⼤项⽬, 有两个⼦系统, 那两个⼦系统要分开记录
import logging # 创建一个操作日志的对象logger(依赖FileHandler) file_handler = logging.FileHandler('l1.log', 'a', encoding='utf-8') # 创建文件 file_handler.setFormatter(logging.Formatter( fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s")) # 设置日志文件的格式 logger1 = logging.Logger('腾讯qq', level=10) # 创建一个日志文件处理对象 logger1.addHandler(file_handler) # 把文件添加到日志 logger1.error("麻花藤明天请大家吃饭. 去不去?") # 再创建⼀个操作⽇志的对象logger(依赖FileHandler) file_handler2 = logging.FileHandler('l2.log', 'a', encoding='utf-8') file_handler2.setFormatter(logging.Formatter( fmt="%(asctime)s - %(name)s -%(levelname)s -%(module)s: %(message)s")) logger2 = logging.Logger('百度贴吧', level=logging.DEBUG) logger2.addHandler(file_handler2) logger2.error("我才不去呢. 我们在北京. 离你那么远") import traceback class GenderException(Exception): pass class Person: def __init__(self, name, gender): self.name = name self.gender = gender logger1.info(f"这个人的名字是{self.name}, 这个人的性别是:{self.gender}") def xizao(self): print(f"{self.name}在洗澡") class ZaoTang: def nan(self, ren): if ren.gender == "男": ren.xizao() else: raise GenderException("我这里要的是男人") def nv(self, ren): if ren.gender == "女": ren.xizao() else: raise GenderException("我这里要的是女人") try: p1 = Person("赵亚磊", "男") p2 = Person("林志玲", "女") zaotang = ZaoTang() zaotang.nan(p2) zaotang.nv(p1) except GenderException: print("走错屋里了") logger1.error("走错屋了.. ") logger1.error(traceback.format_exc()) # 把堆栈信息记录在日志文件中