python之约束、加密及logging模块
一、什么是约束?
在生活中的约束大概就是有什么原因,导致你不能做这件事情了,称之为约束。而在python中的约束是在当多个类中,都需要使用某些方法时,需要人为抛出异常或使用基类+异常处理来进行约束
1 class BaseMessage: 2 def send(self): 3 raise NotImplementedError("send必须被重写") 4 # 约束潜规则, 子类必须有send方法 否则主动抛异常 5 class Msg(BaseMessage): 6 def send(self): 7 print("发送短信") 8 pass 9 10 11 def func(arg): 12 arg.send() 13 obj = Msg() 14 func(obj) 15 16 17 通过抽象方法,抽象类来进行约束 18 from abc import ABCMeta,abstractmethod 19 20 class Base(metaclass=ABCMeta): 21 def f1(self): 22 print("3") 23 @abstractmethod 24 def f2(self): 25 pass 26 class Foo(Base): 27 def f2(self): 28 print(66) 29 obj = Foo() 30 obj.f1() 31 obj.f2() 32 33 当多个类中,都需要使用某些方法时,需要使用基类+异常处理来进行约束 34 总结: python可以人为抛出异常和抽象类+抽象方法来进行约束
二、加密机制
我们的密码只有我们自己知道别人不知道,但是在python中密码的存在形式过于暴露,我们需要通过一种方法来将密码变得复杂并不可以被破解
1 import hashlib # 首先要导入加密模块 2 3 obj = hashlib.md5(b"asdaoijso") # 加盐,防止撞库现象,导致密码泄露 4 obj.update("admin".encode("utf-8")) # 将要加密的字节编码并写入 5 6 # 获取密文 7 print(obj.hexdigest())
三、logging模块相关
在我们日常的生活中会有人写日记记录自己每天干了什么事情,当我们想不起来的时候可以翻一翻笔记再回想起来,而再python中也同样存在充当“日记本”的功能,那就是logging模块。
1 日志相关 2 import logging 3 import traceback 4 5 logger = logging.basicConfig(filename="log.txt", 6 format="%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s", 7 datefmt ="%Y-%m-%d %H:%M:%S", 8 level=10 9 ) 10 logging.debug("一级异常") level=10 11 logging.info("二级异常") level=20 12 logging.warning("三级异常") level=30 13 logging.error("四级异常") level=40 14 logging.critical("最高异常") level=50 15 16 def func(): 17 try: 18 a = a+1 19 except Exception as e: 20 print(logging.error(traceback.format_exc())) #获取当前错误的堆栈信息 21 func()