谈谈python lambda
1. lambda的语法格式
lambda [arg1 [, arg2,......argn]]: expression
2. lambda 与 def的区别
- def创建的方法是有名称的,而lambda没有。
- lambda会返回一个函数对象,但这个对象不会赋给一个标识符,而def则会把函数对象赋值给一个变量(函数名)。
- lambda只是一个表达式,而def则是一个语句。
- lambda表达式” : “后面,只能有一个表达式,def则可以有多个。
- 像if或for或print等语句不能用于lambda中,def可以。
- lambda一般用来定义简单的函数,而def可以定义复杂的函数。
- lambda函数不能共享给别的程序调用,def可以。
3. 使用lambda的例子
有一个list,其中的元素为字典,我们想按照字典中的timestamp的值作为排序的依据,可以在sorted函数中的key参数中使用lambda。
例如:
In [4]: info = [{"timestamp":1530505800,"count":89},{"timestamp":1530505980,"count":306},{"timestamp":1530505860,"count":88},{"timestamp":1530505920,"count":435}]
In [5]: info_up = sorted(info, key=lambda ca:ca["timestamp"])
In [6]: print info_up
[{'count': 89, 'timestamp': 1530505800}, {'count': 88, 'timestamp': 1530505860}, {'count': 435, 'timestamp': 1530505920}, {'count': 306, 'timestamp': 15
30505980}]