Exec无法在其父环境中访问变量

时间:2019-09-30 08:20:03

标签: python python-3.x variables exec

我的朋友要我建立一个可以在for循环中执行代码的函数,所以我这样做了,并且我在声明变量netstandard2.0的同一个文件中使用了exec,现在访问{ {1}}来自执行程序,它说name

这个东西存在于多个文件中,一个运行所有文件,第二个运行所有功能,另一个调用所有功能

我已经尝试在exec中定义变量,并且可以正常工作。 我已经尝试访问name(包含每个函数的文件)文件中的变量,并且它也可以工作。

我尝试过合并NameError: name 'name' is not definedfunctions.py(正在使用exec的文件),然后直接通过python运行它并起作用了

我的functions.py文件

test.py

我的“ test.py”(这是我调用函数的地方)

functions.py

然后,我将通过“ runner.py”中的另一个执行程序运行所有这些操作

def forloop(current, maximum, code):
    for x in range(current, maximum):
        exec(str(code), globals())

现在,定义from functions import * name = 'Ameer' forloop(1,3,""" echo(name) """) 时出现错误。请大家帮我解决这个问题

1 个答案:

答案 0 :(得分:0)

您需要使用调用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)