gpt4 book ai didi

python - 如果嵌套在函数中,listcomp 无法访问 exec 调用的代码中定义的局部变量

转载 作者:太空狗 更新时间:2023-10-29 18:31:21 24 4
gpt4 key购买 nike

<分区>

是否有任何 python 专家能够解释为什么这段代码不起作用:

def f(code_str):
exec(code_str)

code = """
g = 5
x = [g for i in range(5)]
"""

f(code)

错误:

Traceback (most recent call last):
File "py_exec_test.py", line 9, in <module>
f(code)
File "py_exec_test.py", line 2, in f
exec(code_str)
File "<string>", line 3, in <module>
File "<string>", line 3, in <listcomp>
NameError: name 'g' is not defined

虽然这个工作正常:

code = """
g = 5
x = [g for i in range(5)]
"""

exec(code)

我知道它与局部变量和全局变量有关,就好像我从我的主作用域向 exec 函数传递局部变量和全局变量一样,它工作正常,但我不完全明白发生了什么。

这可能是 Cython 的错误吗?

编辑:用 python 3.4.0 和 python 3.4.3 试过了

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com