用lambda装饰

时间:2017-11-22 19:36:08

标签: python parsing lambda python-decorators

我试图制作一个将任何函数转换为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函数吗?

0 个答案:

没有答案