python字典中的下划线和括号是什么意思?
怪我咯
怪我咯 2017-04-17 12:04:33
[Python讨论组]

我在看django的django.contrib.auth.forms的表单,看到一个字典是这么写的,请问这里出现的下划线是什么意思?我

    error_messages = dict(SetPasswordForm.error_messages, **{
        'password_incorrect': _("Your old password was entered incorrectly. "
                                "Please enter it again."),

我在python下试了一下类似的语法,但是出错了:

>>> dict(onw=1, **{"a": "1", "b": _("123")})
Traceback (most recent call last):
  File "<console>", line 1, in <module>
TypeError: 'dict' object is not callable

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
PHPz

^_^

_()函数是gettext()函数的别名。(php的叫法。可能其他语言中名字略有差异)

这个函数广泛用于国际化和本地化(i18n & l10n)。其作用是在翻译表中查找源语言文本(一般是英语)所对应的目标语言文本,找不到则返回本身。

你可以参考:SOF的这个答案;Django官方文档——翻译指南。

不光Django,在其他程序中也有类似实践。例如WordPress的官方主题。

PHP中文网

我来补充一下。

在程序中,_ 在绝大部分情况下是 gettext 函数的别名,而 N_ngettext 的别名。Python 的 gettext 模块有提供一个函数将这个别名「安装」到 builtin 空间中以便在任何地方都可以使用。

在 Python 交互式解释器中,_ 是上一条表达式的值。所以你才会得到那个有些奇怪的错误信息。

其实 _ 就是一个长得有些不一样的名字而已,只是有些地方约定了用它来做特定的事情。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号