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 |