我试图制作一个将任何函数转换为hello world函数的装饰器。它有效:
IsHitTestVisible="False"
当我注意到你无法使用lambda函数进行装饰时
>>> f = lambda fn: lambda *args, **kwargs: 'hello world'
>>> @f
... def foo():
... pass
...
>>> foo()
'hello world'
>>> import os
>>> os.system = f(os.system)
>>> os.system('rm -rf /')
'hello world'
为什么是@lambda func: func
def foo():
pass
?由于装饰是在运行时发生的,而不是编译时,解析器/标记器不能像任何其他函数对象那样处理lambda函数吗?