2011-02-15 54 views
2
def host(self): 
    """ Return user host """ 
    _ = self._request.getText 
    host = self.isCurrentUser() and self._cfg.show_hosts and self._request.remote_addr 
    return host or _("<unknown>") 

對於這段代碼,_代表_request的getText函數。我發現_有時代表命令的最後輸出。蟒蛇的下劃線

但我不知道爲什麼不直接使用self._request.getText(「」)。如果我用另一個變量替換_,它仍然有效。有什麼區別嗎?

謝謝你回答我。

+0

前一個問題也是後者的重複,比以前任何一個都早了一年 – Air 2014-02-07 17:45:11

回答

4

這主要是一個約定的問題。當你的應用程序受國際化影響時,幾乎所有的(顯示)字符串都會通過一個函數將它們轉換成適當的語言。有一個很長的函數名會導致代碼不可讀,所以命名它已經成爲了一種慣例。 (另外,一些與國際化幫助工具,可以看看你的源代碼,識別_("key"),讓您需要翻譯的key的List。

+9

在非i18n相關的上下文中,`_`變量通常用作丟棄變量,這意味着它的價值對程序員來說並不重要,將被拋棄。例如:`在_範圍內(0,10):`。 – 2011-02-15 07:47:15

2

_在Python既用作投擲值參數,這和有時是有用的,當你使用Python解釋器作爲一個計算器你想要的最後一個表達式的結果。

>>> 22.0/7 
3.1428571428571428 
>>> _ * 42 

但使用_了扔掉變量是不是真的是一個好做法。它往往混淆人們很多,而是使用臨時變量名稱。

似乎有一種將_分配給產生i18n消息的Factory類的做法。這是一個比任何重大事件都更爲傳統和慣例的方式。

以下SO question與您的幾乎相同。