你想为 sort() 操作创建一个很短的回调函数,但又不想用 def 去写一个单行函数, 而是希望通过某个快捷方式以内联方式来创建这个函数。

当一些函数很简单,仅仅只是计算一个表达式的值的时候,就可以使用lambda表达式来代替了。比如:

>>> add = lambda x, y: x + y
>>> add(2,3)
5
>>> add('hello', 'world')
'helloworld'

这里使用的lambda表达式跟下面的效果是一样的:

>>> def add(x, y):
...     return x + y
...
>>> add(2,3)
5

lambda表达式典型的使用场景是排序或数据reduce等:

>>> names = ['David Beazley', 'Brian Jones',
...         'Raymond Hettinger', 'Ned Batchelder']
>>> sorted(names, key=lambda name: name.split()[-1].lower())
['Ned Batchelder', 'David Beazley', 'Raymond Hettinger', 'Brian Jones']

尽管lambda表达式允许你定义简单函数,但是它的使用是有限制的。 你只能指定单个表达式,它的值就是最后的返回值。也就是说不能包含其他的语言特性了, 包括多个语句、条件表达式、迭代以及异常处理等等。

你可以不使用lambda表达式就能编写大部分python代码。 但是,当有人编写大量计算表达式值的短小函数或者需要用户提供回调函数的程序的时候, 你就会看到lambda表达式的身影了。

Python实战从入门到精通第十五讲——定义匿名或内联函数相关推荐

  1. Python实战从入门到精通第十六讲——匿名函数捕获变量值

    用lambda定义了一个匿名函数,并想在定义时捕获到某些变量的值. 先看下下面代码的效果: >>> x = 10 >>> a = lambda y: x + y & ...

  2. Python实战从入门到精通第十三讲——返回多个值的函数

    构造一个可以返回多个值的函数 能返回多个值,函数直接return一个元组就行了.例如: >>> def myfun(): ... return 1, 2, 3 ... >> ...

  3. Python实战从入门到精通第二十讲——调用父类方法

    在子类中调用父类的某个已经被覆盖的方法. 为了调用父类(超类)的一个方法,可以使用 super() 函数,比如: class A:def spam(self):print('A.spam')class ...

  4. Python实战从入门到精通第十九讲——自定义字符串的格式化

    通过 format() 函数和字符串方法使得一个对象能支持自定义的格式化. 为了自定义字符串的格式化,我们需要在类上面定义 __format__() 方法.例如: _formats = {'ymd' ...

  5. Python实战从入门到精通第十二讲——给函数参数增加元信息

    写好了一个函数,然后想为这个函数的参数增加一些额外的信息,这样的话其他使用者就能清楚的知道这个函数应该怎么使用. 使用函数参数注解是一个很好的办法,它能提示程序员应该怎样正确使用这个函数. 例如,下面 ...

  6. Python实战从入门到精通第十八讲——改变对象的字符串显示

    想改变对象实例的打印或显示输出,让它们更具可读性. 要改变一个实例的字符串表示,可重新定义它的 __str__() 和 __repr__() 方法.例如: lass Pair:def __init__ ...

  7. Python实战从入门到精通第十四讲——定义有默认参数的函数

    定义一个函数或者方法,它的一个或多个参数是可选的并且有一个默认值. 定义一个有可选参数的函数是非常简单的,直接在函数定义中给参数指定一个默认值,并放到参数列表最后就行了.例如: def spam(a, ...

  8. Python实战从入门到精通第十讲——字符串与文本4之字符串搜索和替换

    在字符串中搜索和匹配指定的文本模式 对于简单的字面模式,直接使用 str.replace() 方法即可,比如: >>> text = 'yeah, but no, but yeah, ...

  9. 【Python】Python实战从入门到精通之七 -- 教你深入理解异常处理

    本文是<Python实战从入门到精通>系列之第7篇 [Python]Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型 [Python]Python实战从入 ...

最新文章

  1. php mysql 检索跳转_jQuery+AJAX+PHP+MySQL数据库开发搜索功能,无跳转无刷新搜索。...
  2. 周三多管理学第七版pdf_考研(管理学)相对好考的211院校推荐
  3. 面积最大的全1子矩阵
  4. asp.net type=file前后台合作 在上传图片到服务器
  5. node.js之stream模块
  6. adb安装apk报错Failure [INSTALL_FAILED_INVALID_URI]
  7. 阿里云前端周刊 - 第 15 期
  8. element-ui组件dialog遇到form
  9. 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)...
  10. LINUX编译autoconf
  11. Amoeba及其类似产品
  12. Unity基础知识—Transform
  13. 解决npx @electron-forge/cli import时提示缺失依赖
  14. 立春----直流电压电流检测模块
  15. android orientation 代码,android常见错误之Wrong orientation? No orientation specified
  16. 5月18日第壹简报,星期三,农历四月十八
  17. LINGO Error Code 122 和 237 出现原因及其解决方法
  18. 图像处理基础——空间域处理之灰度变换
  19. 电信增值业务学习笔记(转)
  20. python的continue用法_Python学习笔记之Break和Continue用法分析

热门文章

  1. SAP License:SAP软件实施要点
  2. SAP License:SAP安装前添加虚拟网卡步骤
  3. 如何浅显得理解风控模型中的特征筛选|附实操细节(全)
  4. 大鱼风控笔记 2:量化风控体系的实现要求
  5. android - 调用系统分享功能分享图片
  6. Hibernate中常见问题 No row with the given identifier exists问题
  7. tensorflow随机梯度下降算法使用滑动平均模型
  8. java中Long的比较
  9. selenium 服务器端运行命令
  10. 好用的MessageFormat类