从导入内的函数中使用“ exec()”命令,不影响主文件的变量

时间:2019-07-15 15:36:42

标签: python exec main globals

我目前正在制作一个将局部变量导出到python可读文件并通过exec导入的模块,但是我不能在不使用return的情况下修改它们(这是整个主意)。问题归结为:

我有两个文件,一个模块(module.py)和一个主文件(main.py)。我希望模块能够在main内部执行代码:

#module.py
def foo():
    exec("b = a")
#main.py
from module import foo
a = 10
foo()
print(b)

预期结果

10

实际结果

NameError: name 'b' is not defined

1 个答案:

答案 0 :(得分:-1)

您可以使用__main__

main.py:

from module import foo
import __main__
a = 10
__main__ = foo(__main__)
print(b)

module.py:

def foo(main):
    main.b = main.a
    return main