Python 中的 Lambda 函数和匿名函数
2023-09-17 22:17:22
def
关键字用于定义function in Python ,正如我们在上一章中看到的。lambda
关键字用于定义 Python 中的匿名函数。
通常,此类函数是一次性使用的。
lambda [arguments] : expression
lambda 函数在:
符号后可以有零个或多个参数。
调用此函数时,将执行 :
之后的表达式。
square = lambda x : x * x
n = square(5) #calling lambda function
上面,lambda 函数以 lambda
关键字开头,后跟参数 x
。
:
后x * x
的表达式将 x * x
的值返回给调用方。
整个 lambda 函数lambda x : x * x
被分配给一个变量square
以便像命名函数一样调用它。
变量名成为函数名,以便我们可以将其作为常规函数调用,如下所示。
上述 lambda 函数定义与以下函数相同:
def square(x):
return x * x
表达式不需要始终返回值。以下 lambda 函数不返回任何内容。
greet = lambda name: print('Hello ', name)
greet('Steve') #output: Hello Steve
注意: lambda 函数只能有一个表达式。显然,它不能替换其主体可能具有条件、循环等的函数。
以下 lambda 函数包含三个参数:
sum = lambda x, y, z : x + y + z
n = sum(5, 10, 15) #returns 30
lambda 函数可以通过在参数前加上 * 来获取任意数量的参数,如下所示:
sum = lambda *x: x[0]+x[1]+x[2]+x[3]
n = sum(5, 10, 15, 20) #returns 50
无参数 lambda 函数(Parameterless Lambda Function)
以下是无参数 lambda 函数的示例。
greet = lambda : print('Hello World!')
greet() #output: Hello World!
匿名函数(Anonymous Function)
我们可以声明一个 lambda 函数并将其调用为匿名函数,而无需将其分配给变量。
(lambda x: print(x*x))(5) #output 25
上面,lambda x: x*x
定义了一个匿名函数,并通过在括号中传递参数来调用它一次 (lambda x: x*x)(5)
。
在 Python 中,函数是一等公民,这意味着就像文字一样,函数也可以作为参数传递。
当我们想将函数作为参数之一提供给另一个函数时,lambda 函数很有用。 我们可以传递 lambda 函数而不将其分配给变量,作为匿名函数作为另一个函数的参数。
def dosomething(fn):
print('Calling function argument:')
fn()
dosomething(lambda : print('Hello World')) # passing anonymous function
myfn = lambda : print('Hello World')
dosomething(myfn) # passing lambda function
上面,dosomething()
函数是用 fn
参数定义的,该参数在 dosomething()
中作为函数调用。
dosomething(lambda : print('Hello World'))
使用匿名 lambda 函数作为参数调用 dosomething()
函数。
Python 具有将其他函数作为参数的内置函数。map()、filter()和reduce()函数是重要的函数式编程工具。他们都以函数作为他们的论据。参数函数可以是普通函数或 lambda 函数。
sqrList = map(lambda x: print(x*x), [1, 2, 3, 4]) # passing anonymous function
next(sqrList)
next(sqrList)
next(sqrList)
next(sqrList)
next(sqrList) #error
本文内容总结: