关于python:在模块之间传递变量

Passing variables between modules

本问题已经有最佳答案,请猛点这里访问。

我想知道为什么这个简单的代码不能工作。

在main.py我有

1
2
3
def foo():
    HTTPHelper.setHost("foo")
    host = HTTPHelper.host()

在httphelper.py中:

1
2
3
4
5
_host = None
def setHost(host):
    _host = host
def host():
    return _host

但当我单步执行foo()时,主机将变为非类型,即使我在前面的行中设置了它。很困惑…


格伦的回答将解决你在模块内的直接问题,但为了给一个人一根钓鱼竿而不是一条鱼:范围界定规则的简短描述?

您应该很好地阅读scope和python的legb规则。存在概念的范围和领域一般也适用于编程和分析,值得花时间理解这些概念。

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


1
2
3
def setHost(host):
    global _host
    _host = host