Python 在模块之间传递变量

Python 在模块之间传递变量,python,Python,我很奇怪为什么这个简单的代码不起作用 总的来说,我有 def foo(): HTTPHelper.setHost("foo") host = HTTPHelper.host() 在HTTPHelper.py中: _host = None def setHost(host): _host = host def host(): return _host 但是,当我逐步执行foo()时,主机将变为NoneType,即使我之前在行中设置了它。非常困惑…格伦的回答将从模

我很奇怪为什么这个简单的代码不起作用

总的来说,我有

def foo():
    HTTPHelper.setHost("foo")
    host = HTTPHelper.host()
在HTTPHelper.py中:

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

但是,当我逐步执行foo()时,主机将变为NoneType,即使我之前在行中设置了它。非常困惑…

格伦的回答将从模块内部解决您的直接问题,但为了给人一根钓鱼杆而不是一条鱼:
def setHost(host):
    global _host
    _host = host

您最好阅读范围和Python的LEGB规则。 存在的范围和领域概念通常也适用于编程和分析,花在理解这些概念上的时间是值得的


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

我给了他一张鱼的图片,并希望他自己做研究,学习如何建立自己的钓鱼竿——
global
关键字和搜索引擎应该足以让他找到剩下的。公平地说,我无意冒犯你,也无意冒犯你,顺便说一句,我只是注意到为什么要对同一主题再次回复。谢谢你的提示。我知道应该如何设计它,现在它是一个合适的类,我正在做另一个部分,只是想要一些快速有效的东西,当像这样简单的东西不起作用时,它真的被窃听了。我是python新手,对编程并不陌生。在Python中工作,C++,C语言,PHP在同一个项目中弄乱了你的语法思维: