装饰器修复技术,让其更加完美,若是不加这个的话,函数内部会打印装饰器内的注释,加上以后,打印的是被装饰的函数.python
装饰器函数
def login_auth(func): """我是装饰器""" def inner(*args, **kwargs): res = func(*args, **kwargs) return res return inner @login_auth def login(): """我是被装饰的函数""" ... print(login) print(help(login)) ############################### <function login_auth.<locals>.inner at 0x000001DC6ABE60D0> Help on function inner in module __main__: inner(*args, **kwargs) 我是装饰器 None
from functools import wraps
from functools import wraps def login_auth(func): @wraps(func) def inner(*args, **kwargs): """我是装饰器""" res = func(*args, **kwargs) return res return inner @login_auth def login(): """我是被装饰的函数""" ... print(login) print(help(login)) #################################### <function login at 0x000002ADDBEC60D0> Help on function login in module __main__: login() 我是被装饰的函数 None