较为简单,适合初学者
1.为函数写一个装饰器,把函数的返回值 +100 然后再返回。
@wrapper
def func():
return 7
result = func()
print(result)
参考答案:
def wrapper(arg):
def inner(*args, **kwargs):
v = arg(*args, **kwargs)
v += 100
return v
return inner
@wrapper
def func():
return 7
result = func()
print(result) # 107
2.为函数写一个装饰器,根据参数不同做不同操作。
flag为True,则 让原函数执行后返回值加100,并返回。
flag为False,则 让原函数执行后返回值减100,并返回。
@x(True)
def f1():
return 11
@x(False)
def f2():
return 22
r1 = f1()
r2 = f2()
参考答案:
def x(res):
def func(arg):
def inner():
v = arg()
v = v + 100 if res else v - 100
return v
return inner
return func
@x(True)
def f1():
return 11
@x(False)
def f2():
return 22
r1 = f1()
r2 = f2()
print(r1, r2) # 111 -78