以下代码有什么作用?
a = lambda _:True
Run Code Online (Sandbox Code Playgroud)
从我在交互式提示中阅读和测试的内容来看,它似乎始终是一个返回的函数True.
我理解正确吗?我希望理解为什么_还使用了下划线().
我不明白这个单一的下划线意味着什么.这是一个神奇的变量吗?我无法在locals()和globals()中看到它.
>>> 'abc'
'abc'
>>> len(_)
3
>>>
Run Code Online (Sandbox Code Playgroud) 在Mercurial中,许多扩展将其帮助/语法字符串包装在对下划线函数的调用中,如下所示:
_('[OPTION] [QUEUE]')
Run Code Online (Sandbox Code Playgroud)
这让我感到困惑,因为它似乎没有必要(编写扩展指令没有提到它),并且似乎没有在类中定义_,所以我想知道这是否是一些特殊的语法我不喜欢不明白,或许可以用另一种方式来说lambda,或者也许是身份功能?另外,我想知道这种方法的好处(无论它是什么)仅仅是文档建议的原始字符串.
我在Python文档中看到的任何内容都没有提到这样的函数,所以我不确定这是一个Python问题还是一个Mercurial问题.
以下是使用此结构的两个示例(查看cmdtable文件底部附近的字典)
我正在使用type()Python中的方法,并遇到了这个:
>>> type(_)
<type 'type'>
Run Code Online (Sandbox Code Playgroud)
下划线(_)字符的"类型" type本身就是.那有什么意思?
我得到了非常奇怪的解释器行为:
>>> _
True
>>> type(True)
<class 'bool'>
>>> type(_)
<class 'bool'>
Run Code Online (Sandbox Code Playgroud)
我尝试过这个因为_在Bpython中出现了一个建议,但它似乎也适用于普通的解释器.我在用
Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 16 2013, 23:39:35)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么_是True的替代品吗?是遗产,类似于";" 可以用来结束命令,但是没有必要/鼓励?
编辑:这似乎是随机的.这不会发生在一个新的终端,但一旦我开始工作,_开始成为现实.这到底是怎么回事?