因为菜所以卷 发表于 2022-9-27 10:45:07

修改装饰器为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

因为菜所以卷 发表于 2022-9-27 10:52:36

脑残了脑残了,会了会了

Twilight6 发表于 2022-9-27 11:00:06



应该是因为装饰器是在定义函数的时候装配的吧

lambda 都将函数定义完成的匿名函数返回给了 test不属于定义函数的过程了吧

页: [1]
查看完整版本: 修改装饰器为lambda表达式