装饰器的通用实现一
import functools
def dec(func):
@functools.wraps(func) # 方法一,更新被装饰器修改后的函数名
def dec1(*args, **kwargs):
print('hello world!') # 你可以写一写附加功能,比如计时
return func(*args, **kwargs)
# dec1.__name__ = func.__name__ # 方法二,更换函数名
return dec1
@dec # @dec表示fun1=dec(fun1)
def fun1():
print('我是函数')
return 6
print(fun1())
装饰器的通用写法二
import functools
def test(xxx):
def dec(func):
@functools.wraps(func) # 更新被装饰器修改后的函数名
def dec1(*args, **kwargs):
print('%s %s():' % (xxx, func.__name__)) # 你可以写一写附加功能,比如计时
return func(*args, **kwargs)
return dec1
return dec
@test(xxx) # @test表示fun1=test(xxx)(fun1),可以带参数了,test(xxx)表示dec
def fun1():
print('我是函数')
return 6
print(fun1())