Python中lambda表达式的用法

先看 官方文档解释:

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+bLambda 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)))

猜你喜欢

转载自blog.csdn.net/yongwan5637/article/details/80253678