gpt4 book ai didi

python - 为什么 lambda 函数的参数是这样传递的?

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:04 25 4
gpt4 key购买 nike

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 函数之后,person 列表在括号内传递,它替换了 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 False

最佳答案

(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

关于python - 为什么 lambda 函数的参数是这样传递的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56453059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com