我很想知道为什么这个简单的代码不起作用。
在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,即使我之前将它设置在行上。很困惑......
答案 0 :(得分:8)
格伦的回答将在一个模块中修复你的直接问题,但是为了给一个男人一个钓鱼杆而不是一条鱼: Short Description of the Scoping Rules?
你可以很好地阅读范围和Python的LEGB规则。 存在概念的范围和领域一般也适用于编程和分析,并且值得花时间理解概念。
值得注意的是,如果你正在处理对象(以及你所写的东西使它看起来像你想要的那样),那么你应该编写一个类并设置它的属性,而不是你之后处理的全局变量。模块导入。
答案 1 :(得分:5)
def setHost(host):
global _host
_host = host