在模块之间传递变量

时间:2010-10-06 01:28:47

标签: python

我很想知道为什么这个简单的代码不起作用。

在main.py中我有

def foo():
    HTTPHelper.setHost("foo")
    host = HTTPHelper.host()

并在HTTPHelper.py中:

_host = None
def setHost(host):
    _host = host
def host():
    return _host

但是当我逐步执行foo()时,主机变为NoneType,即使我之前将它设置在行上。很困惑......

2 个答案:

答案 0 :(得分:8)

格伦的回答将在一个模块中修复你的直接问题,但是为了给一个男人一个钓鱼杆而不是一条鱼: Short Description of the Scoping Rules?

你可以很好地阅读范围和Python的LEGB规则。 存在概念的范围和领域一般也适用于编程和分析,并且值得花时间理解概念。

值得注意的是,如果你正在处理对象(以及你所写的东西使它看起来像你想要的那样),那么你应该编写一个类并设置它的属性,而不是你之后处理的全局变量。模块导入。

答案 1 :(得分:5)

def setHost(host):
    global _host
    _host = host