Exec 无法访问其父环境中的变量
Exec can't access variables in it's parent environment
我的朋友让我构建一个可以在 for 循环中执行代码的函数,所以我正在这样做,我在同一个文件中使用 exec 我声明了一个变量 name
,现在当我从 exec 访问 name
,它说 NameError: name 'name' is not defined
这个东西在多个文件中,一个运行一切,第二个包含所有函数,一个调用所有函数
我尝试在 exec 中定义变量,当然,它可以工作。
我试过在 functions.py
(包含每个函数的文件)文件中访问变量,它也能正常工作。
我已经尝试合并 functions.py
和 test.py
(使用 exec 的文件),然后 运行 直接通过 python 合并它并且成功了
我的functions.py
文件
def forloop(current, maximum, code):
for x in range(current, maximum):
exec(str(code), globals())
我的'test.py'(这是我调用函数的地方)
from functions import *
name = 'Ameer'
forloop(1,3,"""
echo(name)
""")
而且,我 运行 这一切都是通过我 'runner.py'
中的另一个执行官完成的
from functions import *
file = open('test.py', "r+")
content = file.read()
exec(content)
现在,它在定义时给我一个错误提示 NameError: name 'name' is not defined
。请你们帮我解决这个问题
您需要使用调用forloop
的地方的变量。
import inspect
def forloop(current, maximum, code):
frame = inspect.currentframe().f_back
for x in range(current, maximum):
exec(str(code), frame.f_globals, frame.f_locals)
我的朋友让我构建一个可以在 for 循环中执行代码的函数,所以我正在这样做,我在同一个文件中使用 exec 我声明了一个变量 name
,现在当我从 exec 访问 name
,它说 NameError: name 'name' is not defined
这个东西在多个文件中,一个运行一切,第二个包含所有函数,一个调用所有函数
我尝试在 exec 中定义变量,当然,它可以工作。
我试过在 functions.py
(包含每个函数的文件)文件中访问变量,它也能正常工作。
我已经尝试合并 functions.py
和 test.py
(使用 exec 的文件),然后 运行 直接通过 python 合并它并且成功了
我的functions.py
文件
def forloop(current, maximum, code):
for x in range(current, maximum):
exec(str(code), globals())
我的'test.py'(这是我调用函数的地方)
from functions import *
name = 'Ameer'
forloop(1,3,"""
echo(name)
""")
而且,我 运行 这一切都是通过我 'runner.py'
中的另一个执行官完成的from functions import *
file = open('test.py', "r+")
content = file.read()
exec(content)
现在,它在定义时给我一个错误提示 NameError: name 'name' is not defined
。请你们帮我解决这个问题
您需要使用调用forloop
的地方的变量。
import inspect
def forloop(current, maximum, code):
frame = inspect.currentframe().f_back
for x in range(current, maximum):
exec(str(code), frame.f_globals, frame.f_locals)