Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t使用exec(Python)从另一个文件访问外部变量_Python_Python 3.x_Variables_Exec - Fatal编程技术网

Can';t使用exec(Python)从另一个文件访问外部变量

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

我有两个文件,第一个文件中定义了名为'functions.py'的函数,第二个文件中我可以调用名为'test.py'的函数,我正在用'test.py'中的exec执行一些代码,并要求它在'for'循环中初始化变量,同时通过exec执行'for'循环,但我得到了一个错误

名称错误:未定义名称“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)
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的返回中声明它。再次干杯!