首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么lambda函数的参数是这样传递的?

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

Stack Overflow用户
提问于 2019-06-05 09:03:02
回答 1查看 103关注 0票数 2
代码语言:javascript
复制
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 list被传递到一个括号中,该括号替代了x。

对于上面的代码,我得到了4True,因为列表中有4个项目。

代码语言:javascript
复制
#option 1
for person in people:
    print(split_title_and_name(person) == (lambda person: person.split()[0] + ' ' + person.split()[-1]))

但是这段代码没有显示相同的结果。它给出了4个False

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-05 09:06:27

(lambda x: x.split()[0] + ' ' + x.split()[-1])(person)等同于以下代码:

代码语言:javascript
复制
def any_name(x):
    return x.split()[0] + ' ' + x.split()[-1]

any_name(person)

如您所见,lambda创建了一个匿名函数,该函数立即被调用并被丢弃;x是形参,person是实际参数。函数定义中形参的名称并不重要;它也可以是person

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56453059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档