Python中的下划线

2 投票
2 回答
1904 浏览
提问于 2025-04-16 11:51
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。)

撰写回答