2010-10-06 97 views
2

我想知道为什么这个简单的代码不起作用。模块之间传递变量

在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,即使我把它上线之前。很迷茫......

回答

4
def setHost(host): 
    global _host 
    _host = host 
7

格伦的回答将立即解决的问题,从一个模块内,但对于为一个人提供钓鱼竿而不是鱼的缘故: Short Description of the Scoping Rules?

你会怎么做详细阅读范围和Python的LEGB规则。 存在概念的范围和领域也适用于一般的编程和分析,并且值得花费时间理解概念。

同样值得注意的是,如果你将对象当作对象(并且你写的东西看起来像你打算的),你应该写一个类并设置它的属性,而不是你处理的全局变量在模块导入之后。

+0

我给了他一张鱼的照片,并期望他做他自己的研究,学习如何建立自己的钓竿 - '全球'关键字和搜索引擎应该足以让他找到其余的。 – 2010-10-06 02:55:17

+0

够公平的,我的意思是没有进攻或倾斜你的答复与我的顺便说一句,只是注意到为什么另一个答复相同的主题。 – 2010-10-06 03:17:20

+0

感谢您的提示。我意识到应该如何设计这个应用程序,现在它是一个适当的课程,我正在研究另一个部分,只是想要一些快速的工作,并且当一些简单的事情没有做到的时候,就真的被窃听了。我是python的新手,对编程并不陌生。在同一个项目中使用Python,C++,C#,PHP工作会扰乱你的语法 – dutt 2010-10-06 04:07:17