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.pytest.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)