我是python的新手。我正在尝试访问主函数中main()
的模块中imported
内定义的变量。我想要一个方法来将此吞吐量传递给deviceid
变量get_a()
main.py: -
global deviceid
import lib
deviceid=123
lib.get_a()
lib.py: -
def get_a():
global deviceid
prnit deviceid
调用main
或尝试从python shell访问deviceid
返回
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "t.py", line 4, in pp
print a
NameError: global name 'deviceid' is not defined
我尝试在模块和函数内外的许多地方给予global deviceid
。没有任何帮助。
答案 0 :(得分:2)
Python中没有对整个程序都是全局的名称。 Python中的Globals对于特定模块是全局的。要在多个模块中使用值,可以将其名称从一个模块导入另一个模块,使其在两个模块中可用:
# main.py
import lib
deviceid = 123
lib.get_a()
# lib.py
import main
def get_a():
print main.deviceid
正如其他评论者指出的那样,不使用全局变量可能是更好的选择。
# main.py
import lib
deviceid = 123
lib.get_a(deviceid)
# lib.py
def get_a(deviceid):
print deviceid
答案 1 :(得分:0)
您可以将deviceid变量放在lib模块中,并通过lib.deviceid
使用它如果通过执行lib.deviceid = X
在代码中的某处更改deviceid的值,并且如果在其他地方重新导入lib模块并再次请求deviceid,则它将使用X作为值。