Python3匿名函数lambda详解及使用示例

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_39377418/article/details/99336665

概述

       匿名函数,顾名思义即没有名称的函数,和def定义的函数的最大区别在于匿名函数创建后返回函数本身return来返回值,表达式本身结果就是返回值,而def创建后则赋值给一个变量名,在Python中,我们利用关键词lambda创建匿名函数,以下是匿名函数lambda表达式的形式:

  • lambda arg1,arg2,.....argn:expression

以下为一些lambda的特点:

lambda 是一个表达式,而不是一个语句,即我们可以在任何可以使用表达式的场景一样使用lambda。
lambda 的主体也是一个表达式,即和def定义的函数一样,lambda也有函数主体,不过lambda的主体仅仅是一个表达式,所以其使用的功能受到较大的限制。

lambda使用

无参匿名函数

# 可以将lambda直接传递给一个变量,像调用一般函数一样使用

B = lambda :True
print(B())

# 等价于
def BF():
    return True
print(BF())

# 输出结果
"""
True
True
"""

有参匿名函数

lambda支持多个参数

1. 参数无默认值

two_sum = lambda x, y: x + y
print(two_sum(1,2))

# 等同于:
def two_sum(x, y):
    return x + y
print(two_sum(1,2))

# 输出
"""
3
3
"""

2. 参数带默认值

sum_with_100 = lambda x, y=100: x + y
print(sum_with_100(200))

# 等同于:
def sum_with_100(x, y=100): return x + y
print(sum_with_100(200))

# 输出
"""
300
300
"""

从后面传参

之前的示例我们将lambda匿名函数赋值一个变量,通过类似def定义的函数的方式传参,我们可以在lambda后面直接传递参数:

two_sum = (lambda x, y: x + y)(3, 4)
print(two_sum)

# 输出
"""
7
"""

嵌套使用

将lambda嵌套到普通函数中,lambda函数本身做为return的值,构建简单的闭包

def sum(x):
    return lambda y: x + y
sum_with_100 = sum(100)
result = sum_with_100(200)
print(result)

# 输出
"""
300
"""

一些使用实例

1. 结合三元表达式求两值中最小值


lower = lambda x,y: x if x<y else y
print(lower(7,100))

# 输出
"""
7
"""

2. 对字典某一键值进行排序

d = [{"order": 3}, {"order": 1}, {"order": 2}]
# 根据order键值排序
d.sort(key=lambda x: x['order'])
print(d)

# 输出
"""
[{'order': 1}, {'order': 2}, {'order': 3}]
"""

 

猜你喜欢

转载自blog.csdn.net/qq_39377418/article/details/99336665
今日推荐