为什么括号似乎会导致 Python 中的计算?
Why do parentheses appear to cause evaluation in Python?
我看到这个接受了 answer to a question about lambda functions in Python, it seems that the parentheses around what was, in the OP's question, a lambda function definition, will cause it to be evaluated. Perhaps standard behavior across languages (as I see similar in Powershell, here)? And this answer about tuples 可能会以某种方式出现。这一切感觉很熟悉。但是有人可以提供 link 到 Python 文档(或即使不存在也应该存在的简洁文本)来解释为什么括号会导致 Python 中的评估吗?
你的回答将帮助我消化关于列表理解中的 lambda 函数的原始答案。
不,lambda 周围的括号不会导致对其求值。它们在那里 group 表达式,以将其与较大表达式的其他部分区分开来。
真正调用的是 lambda
之后的 (x)
:
>>> lambda x: x*x
<function <lambda> at 0x1076b3230>
>>> (lambda x: x*x)
<function <lambda> at 0x1076b32a8>
>>> x = 10
>>> (lambda x: x*x)(x)
100
如果您不使用括号,(x)
将成为 lambda 函数封装的表达式的一部分:
>>> lambda x: x*x(x)
<function <lambda> at 0x1076b32a8>
因为 lambda
表达式具有最低的 precedence of all Python operators. The relevant documentation about using parentheses is the Parenthesized forms section.
我看到这个接受了 answer to a question about lambda functions in Python, it seems that the parentheses around what was, in the OP's question, a lambda function definition, will cause it to be evaluated. Perhaps standard behavior across languages (as I see similar in Powershell, here)? And this answer about tuples 可能会以某种方式出现。这一切感觉很熟悉。但是有人可以提供 link 到 Python 文档(或即使不存在也应该存在的简洁文本)来解释为什么括号会导致 Python 中的评估吗?
你的回答将帮助我消化关于列表理解中的 lambda 函数的原始答案。
不,lambda 周围的括号不会导致对其求值。它们在那里 group 表达式,以将其与较大表达式的其他部分区分开来。
真正调用的是 lambda
之后的 (x)
:
>>> lambda x: x*x
<function <lambda> at 0x1076b3230>
>>> (lambda x: x*x)
<function <lambda> at 0x1076b32a8>
>>> x = 10
>>> (lambda x: x*x)(x)
100
如果您不使用括号,(x)
将成为 lambda 函数封装的表达式的一部分:
>>> lambda x: x*x(x)
<function <lambda> at 0x1076b32a8>
因为 lambda
表达式具有最低的 precedence of all Python operators. The relevant documentation about using parentheses is the Parenthesized forms section.