python的下划线

时间:2011-02-15 07:32:51

标签: python

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(“”)。如果我用另一个变量替换_,它仍然有效。有什么不同吗?

谢谢你的回答。

2 个答案:

答案 0 :(得分:4)

这主要是一个惯例问题。当您的应用程序受i18n(国际化)约束时,几乎所有(显示)字符串都会通过一个函数将它们转换为正确的语言。拥有一个很长的函数名称将使代码不可读,因此命名它_已成为一种惯例。 (另外,一些有助于i18n的工具可以查看您的源代码,识别_("key")并制作您需要翻译的key列表。

答案 1 :(得分:2)

_在Python中用作throw-value变量,当你使用python解释器作为计算器并且你想要最后一个表达式的结果时,它有时很有用。

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

但是使用_作为抛弃变量并不是一个好习惯。它往往会让人很困惑。而是使用临时变量名称。

似乎有将_分配给产生i18n消息的Factory类的做法。它更像是一种惯例和实践,而不是任何重要的事物。

以下SO question几乎与您的相同。