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 个回答
2
在Python中,_
这个符号可以用作一个临时变量,特别是在你把Python当成计算器使用时,它可以帮助你获取最后一个表达式的结果。
>>> 22.0/7
3.1428571428571428
>>> _ * 42
不过,把_
用作临时变量并不是一个好习惯,因为这会让很多人感到困惑。更好的做法是使用一个更明确的临时变量名称。
还有一种用法是把_
赋值给一个工厂类,这个类用来生成国际化(i18n)消息。这更多的是一种约定和习惯,而不是特别重要的东西。
下面这个SO问题几乎和你的问题一样。
4
这主要是个约定俗成的问题。当你的应用需要支持国际化(i18n)时,几乎所有的显示文本都会通过一个函数来转换成合适的语言。如果这个函数的名字很长,代码就会变得难以阅读,所以大家习惯把这个函数命名为 _。
(另外,一些帮助国际化的工具可以查看你的源代码,识别 _("key")
,并列出你需要翻译的 key
。)