people = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']
def split_title_and_name(person):
return person.split()[0] + ' ' + person.split()[-1]
#option 1
for person in people:
print(split_title_and_name(person) == (lambda x: x.split()[0] + ' ' + x.split()[-1])(person))
何时何地使用上述lambda参数。由于上面使用的lambda参数是x,但在lambda函数之后,因此人员列表在圆括号内传递,该圆括号替代x。
对于上面的代码,由于列表中有4个项目,我得到4个True。
#option 1
for person in people:
print(split_title_and_name(person) == (lambda person: person.split()[0] + ' ' + person.split()[-1]))
但是此代码未显示相同的结果。它给出了4个错误
答案 0 :(得分:1)
(lambda x: x.split()[0] + ' ' + x.split()[-1])(person)
等效于以下代码:
def any_name(x):
return x.split()[0] + ' ' + x.split()[-1]
any_name(person)
如您所见,lambda
创建了一个匿名函数,该函数立即被调用并被丢弃; x
是形式参数,person
是实际参数。函数定义中形式参数的名称无关紧要;也可能是person
。