“Python函数修饰符@”的版本间的差异

来自linux中国网wiki
跳到导航 跳到搜索
(创建页面,内容为“python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。 创建函数修饰符的规则…”)
 
第1行: 第1行:
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。
+
=python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。=
  
 
创建函数修饰符的规则:
 
创建函数修饰符的规则:
第7行: 第7行:
 
(4)修饰符维护被维护函数的签名
 
(4)修饰符维护被维护函数的签名
  
例子1:被修饰函数不带参数
+
=例子1:被修饰函数不带参数=
 
<pre>
 
<pre>
  
第29行: 第29行:
 
test ..
 
test ..
 
log结束 ...
 
log结束 ...
 +
</pre>
 +
=例子2:使用functools模块提供的修改函数属性的方法wraps=
 +
<pre>
 +
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__)
 
</pre>
 
</pre>

2021年6月29日 (二) 08:10的版本

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__)