2011-02-15 125 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与您的几乎相同。