社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

若数 • 6 年前 • 398 次点击  
阅读 14

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

概述

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

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

lambda使用

无参匿名函数

# 可以将lambda直接传递给一个变量,像调用一般函数一样使用
B = lambda :True
print(B())

# 等价于
def BF():
    return True
print(BF())
复制代码

示例结果:

True
True
复制代码

有参匿名函数

支持多个参数

参数无默认值
two_sum = lambda x, y: x + y
# 等同于:
def two_sum(x, y): return x + y
print(two_sum(1,2))
复制代码

示例结果:

3
复制代码
参数带默认值
sum_with_100 = lambda x, y=100: x + y
# 等同于:
def sum_with_100(x, y=100): return x + y
print(sum_with_100(200))
复制代码

示例结果:

300
复制代码

从后面传参

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

two_sum = (lambda x, y: x + y)(3, 4)
print(two_sum)
复制代码

示例结果:

7
复制代码

嵌套使用

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

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}]
复制代码

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/33111
 
398 次点击