Python中Lambda表达式后括号的作用及相关代码执行问题解析
你的Lambda表达式问题解析
第一种代码的执行结果是什么意思?
当你写lambda person: person.split()[0] + ' ' + person.split()[-1]的时候,你其实只是定义了一个匿名函数对象,并没有去执行它。这就像你用def定义了一个函数,但只写了函数名、没加括号调用一样。
换成普通函数的写法,你的代码等价于:
def get_short_name(person): return person.split()[0] + ' ' + person.split()[-1] for person in people: print(get_short_name) # 只打印函数对象,不调用执行
此时Python会输出这个函数在内存中的地址(也就是你看到的<function <lambda> at 0x7f9d04332ed8>这类内容),它只是告诉你这是一个函数实例,并不是函数执行后生成的结果。
Lambda表达式后加(person)代表什么?
在Lambda表达式后面加上(person),本质就是调用这个刚刚定义的匿名函数——把当前循环里的person变量作为参数传递给Lambda的参数person,让函数执行内部的字符串拼接逻辑,返回处理后的结果,最后print输出这个返回值。
还是用普通函数类比,这等价于:
def get_short_name(person): return person.split()[0] + ' ' + person.split()[-1] for person in people: print(get_short_name(person)) # 调用函数并传入参数,打印返回结果
这样每次循环都会执行函数逻辑,自然就能输出你预期的姓名结果啦。
内容的提问来源于stack exchange,提问作者kiwiboy
相关产品推荐
相关产品推荐

