Не удается получить доступ к внешней переменной из другого файла, используя exec (Python) - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть два файла, в первом из которых определены функции с именем 'functions.py', а во втором я могу вызвать эти функции с именем 'test.py', и я выполняю некоторый код с помощью exec из 'test. py 'и спрашивая, что он запрашивает переменную, инициализированную в цикле' for 'в то время как цикл' for 'выполняется через exec, но я получаю ошибку

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' я вызываю этоfunction

from functions import *

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

Теперь я выполняю его с другим exec в другом файле, но я вполне уверен, что проблема заключается в этом.

Я думаю, что я смогу получить доступ к 'x'из этого exec, но я не могу, он дает мне ошибку, говорящую

NameError: имя 'x' не определено

Скажите, пожалуйста, почему 'x'не определено и как я могу получить 'x' из этого файла.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

сначала на test.py вы должны:

import functions

... затем вы можете назвать его как

functions.forloop

ура!

0 голосов
/ 30 сентября 2019

Вы пытались импортировать метод forloop из вашего файла functions.py в файл test.py?

Ваш файл test.py должен выглядеть примерно так:

from functions import forloop

forloop(1,5,1,"""
echo(x)
""")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...