0

我是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或尝试deviceid从 python shell 访问正在返回

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在模块和功能内外的许多地方提供帮助。没有任何帮助。

有人请帮忙。

4

2 回答 2

2

Python 中没有对整个程序是全局的名称。Python 中的全局变量对特定模块是全局的。要在多个模块中使用一个值,请将其名称从一个模块导入另一个模块,使其在两个模块中可用:

# 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
于 2012-07-17T13:07:04.430 回答
0

您可以将 deviceid 变量放在 lib 模块中并通过 lib.deviceid 使用它

如果您通过执行更改代码中某处的 deviceid 的值lib.deviceid = X,并且如果您在其他地方重新导入 lib 模块并再次请求该 deviceid,它将具有 X 作为值。

于 2012-07-17T12:33:56.137 回答