4.7.5. Lambda Expressions
Small anonymous functions can be created with the lambda
keyword. This function returns the sum of its two arguments: lambda a, b: a+b
. Lambda functions can be used wherever function objects are required. They are syntactically restricted to a single expression. Semantically, they are just syntactic sugar for a normal function definition. The syntax to create a lambda function is lambda [arguments]: expression. Like nested function definitions, lambda functions can reference variables from the containing scope:
>>> def make_incrementor(n):
... return lambda x: x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43
Python中,lambda函数也叫匿名函数,及即没有具体名称的函数,它允许快速定义单行表达式,可以用在任何需要函数的地方。lambda表达式中,冒号前面是参数,可以有多个,用逗号分隔,冒号右边是返回值。 与区别于def定义的函数区别如下:
1)def创建的方法是有名称的,而lambda没有。
2)lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)。
3)lambda只是一个表达式,而def则是一个语句,lambda一般用来定义简单的函数,而def可以定义复杂的函数。
# python - - lambda表达式
#单个参数的:
g = lambda x: x ** 2
print(g(3))
# >>>9
#多个参数的:
g = lambda x, y, z: (x + y) ** z
print(g(1, 2, 2))
# >>>9
# lambda表达式会返回一个函数对象,如果没有变量接受这个返回值的话,它很快就会被丢弃。
# 也正是由于lambda只是一个表达式,所以它可以直接作为list和dict的成员。如:
# 需求:将列表中的元素按照绝对值大小进行升序排列
list1 = [3,5,-4,-1,0,-2,-6]
print(list1)
print(sorted(list1, key=lambda x: abs(x)))