匿名函数 / Anonymous Function


匿名函数是一种不需要绑定函数名的函数 (i.e. functions that are not bound to a name)。匿名函数通过 lambda 表达式进行构建。常用于快速建立起一个(一次性的)函数。

Note: lambda 是 Python 的一个表达式/关键字,类似 return,并非一个函数,而是能够生成匿名函数。

关于匿名函数的使用,可以用下面的方式,直接使用,

 # Use directly
f = lambda x: x+1
def foo(x): return x
print('f type is:', type(f), 'foo type is:', type(foo))

lambda 所生成的函数可以直接使用,此时可能有违匿名函数的概念,当 lambda 函数通过 lambda 表达式定义后,需要调用时由于函数匿名因此需要将其赋予某个变量,通过变量名进行调用,此时实际上已经对匿名函数进行了命名,因此与匿名的概念有所相违。

f type is: <class 'function'> foo type is: <class 'function'>

但直接使用并不是匿名函数的最佳使用方式,lambda 生成的匿名函数最佳的使用场景应该是当一个函数需要一个简单临时函数作为输入参数的时候,使用 lambda 生成匿名函数可以免去为这个中间函数进行定义命名的过程。例如使用 map对可迭代对象的所有值进行平方的时候,用匿名函数完成平方计算便十分方便。

# Use as a calculate func in other function
print(list(map(lambda x: x*x, [1, 2, 3, 4])))

同时,匿名函数也可以用在当需要 return 一个函数的场景下,免去对函数的命名。

 # Use as a return func in other function
def foo(n): return lambda x: n+x
print(foo('n')('x'))

最新文章

  1. 十分钟轻松让你认识ASP.NET MVC6
  2. thinkphp中assign()和display()区别和用法
  3. MySQL基础操作命令
  4. ListView防止滑动变色的小技巧
  5. hdu 2459 (后缀数组+RMQ)
  6. Java 8 正式发布,新特性全搜罗
  7. Unity SendMessage方法
  8. 腾讯地图之Marker
  9. c++ const全局对象是如何处理的
  10. 开始ITGEGE教育社区的视频录制----嵌入式基础知识讲解
  11. android放大镜效果实现
  12. Android APK反编译:APKtool使用详解
  13. 移动web-bootstrap
  14. Linux常用命令(三)查看当前计算机各方面信息
  15. 17秋 软件工程 Alpha 事后诸葛亮会议
  16. OPatch cannot find a valid oraInst.loc file to locate Central Inventory
  17. mysql国内镜像下载网址
  18. 6.关于Xamarin Android对APK包大小的处理
  19. FindBugs详解
  20. Mac 使用技巧分享

热门文章

  1. CodeIgniter学习笔记二:CI中的query_builder(AR)、连贯操作
  2. android 摄像头相关使用记录
  3. mongodb安装和配置三步走
  4. Oracle 学习----:查看当前时间与Sqlserver语句不一样了
  5. Wordpress 后台文章编辑区添加模板选择功能
  6. css深入理解vertical-align
  7. PAT 甲级 1011 World Cup Betting
  8. Apache实现一个ip(如:127.0.0.1)和多个域名(虚拟主机)绑定
  9. 【bzoj2732】[HNOI2012]射箭 二分+半平面交
  10. GYM - 101147 A.The game of Osho