You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Lambda函数变量传参及调用返回异常问题咨询

Python Lambda 调用问题解答

第一个问题:Lambda 末尾加(person)的作用

你的理解完全正确,这就是Lambda匿名函数的立刻调用语法:

  • lambda x: x.split()[0] + ' ' + x.split()[-1] 这部分仅完成了匿名函数的定义,创建了一个接收1个参数x的函数对象,和单独写普通函数没有本质区别,等价于:
def get_short_name(x):
    return x.split()[0] + ' ' + x.split()[-1]
  • 普通函数定义后需要主动调用才会执行逻辑、返回结果,匿名函数没有绑定固定的函数名,所以直接在函数定义的外层再加括号传入实参person,就等于立刻调用这个匿名函数,把循环遍历得到的person值传给形参x,最终返回处理后的简化人名。

第二个问题:改写后输出函数地址的原因

你改写后的代码只做了「定义匿名函数」的操作,没有补全调用的步骤,所以print输出的就是这个匿名函数对象本身的内存标识,也就是你看到的<function <lambda> at 0xxxxx>结果。
如果要让改写后的代码正常输出,只要补全调用逻辑即可,注意你这里Lambda的形参名和外部循环变量都叫person,属于局部变量覆盖外层变量的情况,虽然能正常运行,但不建议重名避免后续逻辑混淆:

for person in people:
    # 末尾加(person)调用匿名函数
    print((lambda person: person.split()[0] + ' ' + person.split()[-1])(person))

额外补充

这种简单的字符串处理场景其实不需要用立刻调用的Lambda,直接在循环里处理字符串可读性会更高:

for person in people:
    print(f"{person.split()[0]} {person.split()[-1]}")

内容的提问来源于stack exchange,提问作者Kam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:45:04