简单装饰器的代码展示:
def test1(x):
return x * x
def test2(x):
return x + 2 * x
def demo(f):
def test(x):
print(f.__name__)
return f(x)
return test
# a = demo(test1)
# print(a(2))
@demo
def ges(x):
return x * x
a = ges(4)
print(a)
带参数的装饰器简单示例:
# 装饰器也传入参数,传入多个参数
def str(s):
def demo(f):
def test(*arg,**kwargs):
print(s)
print(f.__name__)
return f(*arg,**kwargs)
return test
return demo
#有时候需要装饰器也可以传入参数
@str("abc")
def test4(x,y,z):
print("x={},y={},z={}".format(x,y,z))
test4(1,2,3)
补充和完善装饰器:
import functools
# 内置的库帮我们把装饰器外面的参数转入到里面去
# 装饰器也传入参数,传入多个参数
def demo(f):
@functools.wraps(f)
def test(*arg,**kwargs):
print(f.__name__)
return f(*arg,**kwargs)
return test
#有时候需要装饰器也可以传入参数
@demo
def test4(x,y):
'''
this is a test for htt
:param x:
:param y:
:return:
'''
print("x={},y={}".format(x,y))
print(test4.__name__)
print(test4.__doc__)