Python如何知道lambda函数中的逗号并不表示map fun的另一个参数

问题描述 投票:0回答:1
list(map(lambda x,y : x*y , listA, listB))

我想知道Python如何理解lambda x,y中存在的逗号属于lambda函数,并且它不是map函数第一个参数的结尾。

python syntax
1个回答
0
投票
由于冒号

lambda

,Python 知道 
:
 函数定义尚未完成。 
lambda
函数的语法是:

lambda args: expression
其中可以有任意数量的参数,并且所有参数也是可选的。因此,这个表达式

lambda: print('in lambda')
有效,这个也行:

lambda arg1, arg2, arg3: sum([arg1, arg2, arg3])
计算此表达式时:

list(map(lambda x,y : x*y , listA, listB))
Python 知道 

x

y
 之间的逗号属于 
lambda
 函数,因为尚未到达预期的冒号。一旦 Python 到达冒号,它将需要一个表达式,在本例中为 
x*y
,它完成了 
lambda
 函数定义。现在,找到的任何逗号都将被评估为 
map
 函数
的参数分隔符

© www.soinside.com 2019 - 2024. All rights reserved.