【发布时间】:2012-07-17 11:53:16
【问题描述】:
我是 python 的新手。我正在尝试访问在主函数中为 imported 的模块中定义在 main() 内的变量。我想要一种将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。没有任何帮助。
请有人帮忙。
【问题讨论】:
-
看过这里,stackoverflow.com/questions/423379/…
deviceid需要在您似乎正在使用的两个模块之外声明 。您是否尝试在调用 main 之前在 REPL 中声明它? -
而不是定义全局变量,在我看来,如果您只是将变量作为参数传递会更好,如下所示:
def get_a(deviceid) -
除了我完全支持的 dex19dt 的建议之外,您将无法从
lib.py中导入main.py,因为您已经导入反之亦然。由于循环依赖,尝试这样做会失败。 -
传递参数会起作用。然后我想在很多地方编辑代码。上面显示的示例只是一个大文件的一部分。谢谢。
-
另一种方法是将
deviceid添加到第三个文件中。
标签: python python-2.7 jython