我在这个被接受的answer中看到一个关于Python中lambda函数的问题,似乎括号围绕着什么是OP的问题,一个lambda函数定义,将导致评估。也许跨语言的标准行为(正如我在Powershell中看到的类似,here)? this answer about tuples可能会以某种方式表现出来。这一切都很熟悉。但是有人可以提供Python文档的链接(或者说应该存在的简洁文本,即使它不存在)解释为什么括号会导致Python中的评估?
您的回答将帮助我消化列表推导中关于lambda函数的原始答案。
答案 0 :(得分:4)
不,lambda周围的括号不会导致它被评估。它们是 group 表达式,以区别于大表达式的其他部分。
执行实际调用的(x)
之后是lambda
:
>>> 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。有关使用括号的相关文档是Parenthesized forms section。