“Python函数修饰符@”的版本间的差异
跳到导航
跳到搜索
第48行: | 第48行: | ||
print(test1.__name__) | print(test1.__name__) | ||
print(test2.__name__) | print(test2.__name__) | ||
+ | |||
+ | |||
+ | 运行结果: | ||
+ | |||
+ | wrapper | ||
+ | test2 | ||
+ | |||
+ | 可见test1的函数名称变了,如果某些代码用到就会出问题,可以使用functools模块提供的修改函数属性的方法wraps | ||
</pre> | </pre> |
2021年6月29日 (二) 08:12的版本
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。
创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个新函数 (4)修饰符维护被维护函数的签名
例子1:被修饰函数不带参数
def log(func): def wrapper(): print('log开始 ...') func() print('log结束 ...') return wrapper @log def test(): print('test ..') test() 运行结果: log开始 ... test .. log结束 ...
例子2:使用functools模块提供的修改函数属性的方法wraps
def log(func): def wrapper(): print('log开始 ...') func() print('log结束 ...') return wrapper @log def test1(): print('test1 ..') def test2(): print('test2 ..') print(test1.__name__) print(test2.__name__) 运行结果: wrapper test2 可见test1的函数名称变了,如果某些代码用到就会出问题,可以使用functools模块提供的修改函数属性的方法wraps