2010-10-06 98 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