我希望使用内置的
据我所知,lambda表达式应该捕获整个当前帧,包括在globals和locals参数中定义的所有变量。
那么为什么Python会表现出这样的行为呢?
eval
函数来评估一个lambda表达式,其中变量y
在'locals'参数中定义。遗憾的是结果函数不起作用:>>>x = eval('lambda: print(y)',{},{'y':2})
>>>x()
Traceback (most recent call last):
File "<pyshell#75>", line 1, in <module>
x()
File "<string>", line 1, in <lambda>
NameError: name 'y' is not defined
但是如果在“globals”参数中定义了y
,它就可以工作:
>>> x = eval('lambda: print(y)', {'y': 2},{})
>>> x()
2
据我所知,lambda表达式应该捕获整个当前帧,包括在globals和locals参数中定义的所有变量。
那么为什么Python会表现出这样的行为呢?
eval
的危险吗? - bruno desthuilliers