【发布时间】:2021-04-06 17:36:52
【问题描述】:
以下是在用户定义函数中使用 lambda 函数的示例:
def sample_func(a): #1
return lambda a:a*a
当它被调用时,
s=sample_func(2) #2
print(s)
输出似乎是像<function sample_func.<locals>.<lambda> at 0000xx这样的函数地址
在上面赋值给变量s之后,下面
s(5) #3
返回 25。
这里是python lambda的新手,解释这个的正确方法是什么,解释器如何处理#2中的参数以及为什么在#2中没有返回4,谢谢你的帮助!
【问题讨论】:
-
sample_func返回一个函数,所以s是一个函数。像任何函数一样,如果你想使用它,你必须调用它。此外,lambda 函数只有一个参数,因此您必须使用参数调用它。请注意,此参数与sample_func(a)中的a完全无关,只是被忽略了。 -
lambda是一个函数。sample_func返回一个 lambda 函数,因此#2为您提供该输出。您将该函数分配给s,然后在#3中使用参数5调用它。你的函数接受它并返回5*5。当您调用sample_func时,#2中的参数(2)进入a,但没有对其进行任何处理。lambda函数中的a指的是 lambda 的a参数。你对什么感到困惑? -
谢谢@PranavHosangadi,是的,正如你提到的那样,
2 goes into a, but nothing is done with it需要如何解释 -
如果您将 lambda 的参数命名为其他名称:例如,查看
return lambda x: a * x时会得到什么。当您将其命名为a并且该范围内已经有一个名为a的变量时,lambda 的a隐藏了sample_func的a -
完美@PranavHosangadi,回答!谢谢!