修改装饰器为lambda表达式
共有三个装饰器,要求修改其为lambda表达式的形式:def add(func):
def inner():
x = func()
return x + 1
return inner
def cube(func):
def inner():
x = func()
return x * x * x
return inner
def square(func):
def inner():
x = func()
return x * x
return inner
@add
@cube
@square
def test():
return 2
print(test())
我的答案:
add=lambda func:(lambda x=func():x+1)
cube=lambda func:(lambda x=func():x**3)
square=lambda func:(lambda x=func():x**2)
@add
@cube
@square
test=lambda :2 #这里出错了,但是如果这里的定义换成def test():这种定义函数的类型,就可以正常运行了,为什么啊?
SyntaxError: invalid syntax 脑残了脑残了,会了会了
应该是因为装饰器是在定义函数的时候装配的吧
lambda 都将函数定义完成的匿名函数返回给了 test不属于定义函数的过程了吧
页:
[1]