无法使用exec(Python)从另一个文件访问外部变量

时间:2019-09-30 19:16:32

标签: python python-3.x variables exec

我有两个文件,第一个文件中定义了名为“ functions.py”的函数,第二个文件中我可以调用名为“ test.py”的函数,并且我正在使用来自“ test”的exec执行一些代码。 py”,并要求它在通过exec进行“ for”循环时要求在“ for”循环中初始化的变量,但出现错误

  

NameError:未定义名称'x'

详细信息:

在'functions.py'中,我描述了一个名为'forloop'的函数,如下所示:

def forloop(current, maximum, increment, code):
    frame = inspect.currentframe().f_back
    for x in range(current, maximum, increment):
        exec(str(code), frame.f_globals, frame.f_locals)

在“ test.py”中,我正在调用此函数

from functions import *

forloop(1,5,1,"""
echo(x)
""")

现在我正在另一个文件中的另一个exec执行它,但是我很确定问题就在这里。

我认为我应该能够从该exec访问'x',但我不能,它给我一个错误提示

  

NameError:未定义名称'x'

请告诉我为什么未定义'x',以及如何从该文件中获取'x'。

2 个答案:

答案 0 :(得分:0)

您尝试将forloop方法从functions.py文件导入到test.py文件吗?

您的test.py文件应如下所示:

from functions import forloop

forloop(1,5,1,"""
echo(x)
""")

答案 1 :(得分:0)

首先在test.py上,您必须:

import functions

...那么您可以将其称为

functions.forloop

欢呼!