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

问题描述 投票:0回答:1

我的朋友让我建立一个可以在for循环中执行代码的函数,因此,我正在这样做,并且我在声明变量'name'的同一文件中使用了exec,现在当我从中访问'name'时exec,它说“ NameError:未定义名称'name'”

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

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

我已经尝试合并'functions.py'和'test.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,"""
print(name)
""")

而且,我正在通过'runner.py'中的另一个执行程序运行所有这些程序>

from functions import *
file = open('test.py', "r+")
content = file.read()
exec(content)

现在,在定义时,出现错误消息:“ NameError:名称'name'未定义”。请大家帮我解决这个问题

我的朋友让我建立一个可以在for循环中执行代码的函数,因此,我正在这样做,并且我在声明变量'name'的同一文件中使用了exec,现在当我从中访问'name'时...

python python-3.x variables exec
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.