回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有以下资料:</p>
<pre><code>x = [1,2,3,4,5]
def foo(lbd:str, value):
ret_val = eval(lbd, globals(), locals())
print(ret_val)
</code></pre>
<p>在此调用中使用“value”变量成功:</p>
<pre><code>>>> foo("[i for i in value]",x)
[1, 2, 3, 4, 5]
</code></pre>
<p>但这一次失败了:</p>
<pre><code>>>> foo(r"any([x in value for x in {'',0,None,'0'}])", x)
Traceback (most recent call last):
File "<pyshell#171>", line 1, in <module>
foo(r"any([x in value for x in {'',0,None,'0'}])", x)
File "<pyshell#165>", line 2, in foo
ret_val = eval(lbd, globals(), locals())
File "<string>", line 1, in <module>
File "<string>", line 1, in <listcomp>
NameError: name 'value' is not defined
</code></pre>
<p>我能够解决这个问题,但很想知道这里发生了什么</p>
<pre><code>>>> foo(r"(lambda V=value: any([x in V for x in {'',0,None,'0'}]) )()", x)
False
</code></pre>