Can';t使用exec(Python)从另一个文件访问外部变量
我有两个文件,第一个文件中定义了名为'functions.py'的函数,第二个文件中我可以调用名为'test.py'的函数,我正在用'test.py'中的exec执行一些代码,并要求它在'for'循环中初始化变量,同时通过exec执行'for'循环,但我得到了一个错误 名称错误:未定义名称“x” 详情: 在“functions.py”中,我描述了一个名为“forloop”的函数,如下所示:Can';t使用exec(Python)从另一个文件访问外部变量,python,python-3.x,variables,exec,Python,Python 3.x,Variables,Exec,我有两个文件,第一个文件中定义了名为'functions.py'的函数,第二个文件中我可以调用名为'test.py'的函数,我正在用'test.py'中的exec执行一些代码,并要求它在'for'循环中初始化变量,同时通过exec执行'for'循环,但我得到了一个错误 名称错误:未定义名称“x” 详情: 在“functions.py”中,我描述了一个名为“forloop”的函数,如下所示: def forloop(current, maximum, increment, code): f
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)
from functions import forloop
forloop(1,5,1,"""
echo(x)
""")
在'test.py'中,我调用这个函数
from functions import *
forloop(1,5,1,"""
echo(x)
""")
现在我用另一个文件中的另一个exec执行它,但我很确定问题就在这里
我想我应该可以从这个执行官那里访问“x”,但是,我不能,它给了我一个错误提示
名称错误:未定义名称“x”
请告诉我为什么没有定义“x”,以及如何从该文件中获取“x”。是否尝试将forloop方法从functions.py文件导入test.py文件 您的test.py文件应如下所示:
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)
from functions import forloop
forloop(1,5,1,"""
echo(x)
""")
首先在test.py上,您必须:
import functions
…那么你可以称之为
functions.forloop
干杯 实际上,我是这样“从函数导入*”导入的,但我认为这很明显,但事实并非如此,我将编辑我的问题,对不起,请您知道还有什么可能导致此问题。谢谢您的回答,但是,我在测试中“从函数导入*”完成了此操作。但是,它仍然给出相同的错误,我已经编辑了我的问题,并添加了问题代码,以避免进一步混淆,如果您能帮助我,请编辑您的答案。当您使用导入时,您导入变量和函数。。。但不是for循环的x。您不能使用X,因为它只在forloop的for循环中,如果您想要一些输出,请在函数forloop的返回中声明它。再次干杯!