我可以访问模块中的局部变量吗?
例如,我的 main.py 脚本有变量
a
,我希望我的模块函数打印 a
# main.py
import sys
import os
sys.path.insert(0, os.path.abspath(r'C:\MyModules'))
import mymodule
a = 'It worked'
mymodule.test()
以下文件保存在MyModules文件夹中。
# mymodule.py
def test():
print(a)
如果我将
a = 'It worked'
添加到 mymodule.py 中,当我运行 main.py 时,它会被打印。
显然以上只是一个演示功能的示例。
要访问局部变量,您需要将其作为参数直接传递到 test() 中,或者将 vars() 作为参数传递到 test() 中。本质上,您需要使用参数,这是除了在内存中实际查找变量并从那里获取值之外唯一方便的方法,这很烦人。
tl;dr 使用参数
如果您想使用 mymodule 中的 test 函数打印变量 a 的值,您可以将该变量作为参数传递给该函数。 否则你会得到一个 NameError 因为 a 没有在 mymodule 中定义。
# mymodule.py
def test(a):
print(a)
# main.py
import sys
import os
import mymodule
a = 'It worked'
mymodule.test(a=a)