经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python3 » 查看文章
Python3匿名函数lambda介绍与使用示例
来源:jb51  时间:2019/5/20 8:37:09  对本文有异议

概述

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

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

以下为一些lambda的特点:

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

lambda使用

无参匿名函数

  1. # 可以将lambda直接传递给一个变量,像调用一般函数一样使用
  2. B = lambda :True
  3. print(B())
  4.  
  5. # 等价于
  6. def BF():
  7. return True
  8. print(BF())

示例结果:

True
True

有参匿名函数

支持多个参数

参数无默认值

  1. two_sum = lambda x, y: x + y
  2. # 等同于:
  3. def two_sum(x, y): return x + y
  4. print(two_sum(1,2))

示例结果:

3

参数带默认值

  1. sum_with_100 = lambda x, y=100: x + y
  2. # 等同于:
  3. def sum_with_100(x, y=100): return x + y
  4. print(sum_with_100(200))

示例结果:

300

从后面传参

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

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

示例结果:

7

嵌套使用

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

  1. def sum(x):
  2. return lambda y: x + y
  3. sum_with_100 = sum(100)
  4. result = sum_with_100(200)
  5. print(result)

示例结果:

300

一些使用实例

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

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

实例结果:

7

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

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

实例结果

[{'order': 1}, {'order': 2}, {'order': 3}]

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对w3xue的支持。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号