【问题标题】:the underscore of python [duplicate]python的下划线[重复]
【发布时间】:2011-02-15 07:32: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("") 。如果我用另一个变量替换_,它仍然有效。有什么区别吗?

谢谢你回答我。

【问题讨论】:

  • 前一个问题也是后一个问题的副本,比这两个问题早一年多

标签: python


【解决方案1】:

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

【讨论】:

  • 同样在非 i18n 相关的上下文中,_ 变量经常被用作丢弃变量,这意味着它的值对程序员来说并不重要,将被丢弃。示例:for _ in range(0, 10):.
【解决方案2】:

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

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

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

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

关注SO question和你的差不多。

【讨论】:

    猜你喜欢
    • 2021-07-04
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2011-10-19
    • 2015-03-24
    • 2015-02-26
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多