如何访问在main函数中导入的模块中的变量,该模块在python中的main()中定义

时间:2012-07-17 11:53:17

标签: python python-2.7 jython

我是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。没有任何帮助。

有人请帮忙。

2 个答案:

答案 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作为值。