我想创建一个python 3程序,由一个主python程序和几个模块组成,我将导入到主程序中。 我想使用在主程序中创建的变量并在模块中使用它们。 我在主程序中暂时有这个:
import sys
sys.dont_write_bytecode = True
import importlib
from tests import blather
relayrange = 87
relay = [0] * relayrange
blather.BLA(relayrange, relay)
在与我的main函数相同的映射中,我有一个目录“tests”,其中包含python文件blather.py,它包含此代码
def BLA(relayrange, relay):
print ('this is module BLA')
print (relayrange)
print (relay)
这个有效!但正如你所看到的,我需要反驳将变量传递给函数,因为我发现在模块BLA中没有其他方法可以简单地使用主程序中的变量(我被告知这些变量是自动的“全局”)。
所以我的问题是,如何在导入的模块中使用python代码主体中的(global?)变量? 我的主文件中可能有很多变量,我想在我的模块中使用,所以像这样的参数传递会变得非常笨拙。
我尝试使用关键字global进行不同的测试,但没有任何效果。 你可能会说我是Python的新手。
P.S。在被标记为重复之后,我终于通过将所有全局变量放在模块g.pi中并在每个需要全局变量的模块中导入g.pi来解决这个问题,所以现在我有三个,而不是两个模块,即main.pi ,blather.pi和g.py
main.pi包含:
import sys
#sys.dont_write_bytecode = True
import importlib
from shared import g
from tests import blather
print(g.relayrange)
print(g.relay)
g.relay[47] = 10
print (g.relay)
g.relay[12] = 999
blather.BLA()
和blather.py包含:
from shared import g
def BLA():
print ('in module')
print (g.relay)
g.py只包含变量,如下所示:
relayrange = 87
relay = [0] * relayrange