Python Lambda 的简单用法

下面代码简单举例介绍以下 lambda的用法。

from functools import reduce

#1 python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。
#2 python lambda它只是一个表达式,而def则是一个语句。
#匿名函数lambda
num = lambda x,y : x+y

print("lambda")
print(num(3,4))

#上面的代码可以使用 def 定义函数实现

def add(x,y):
    return x+y
print("def")
print(add(3,4))

'''
由上例可以看出
lambda的一般形式是关键字lambda后面跟一个或多个参数,
紧跟一个冒号,以后是一个表达式。
lambda是一个表达式而不是一个语句。
它能够出现在Python语法不允许def出现的地方。作为表达式,
lambda返回一个值(即一个新的函数)。
lambda用来编写简单的函数,而def用来处理更强大的任务。

'''

#lambda 使用举例
#python2 的用法
'''
#python2  是如下写法,但是python 3中修改了写法。见如下写法
foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]

#
print(filter(lambda x: x % 3 == 0, foo))
 #--[18, 9, 24, 12, 27]
map_list = list()
print(map(lambda x: x * 2 + 10, foo))
#--[14, 46, 28, 54, 44, 58, 26, 34, 64]
print(reduce(lambda x, y: x + y, foo))
'''





#python 3 的用法
#Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce  

foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
num_list = list(filter(lambda x: x % 3 == 0, foo))
print(num_list)
 #--[18, 9, 24, 12, 27]
map_list = list(map(lambda x: x * 2 + 10, foo))
print(map_list)
#--[14, 46, 28, 54, 44, 58, 26, 34, 64]

'''
reduce函数:
在Python 3里,reduce()函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里 用的话要 先引
入:
'''
print(reduce(lambda x, y: x + y, foo))



# 下面的代码主要是为了 体现lambda 的其他用法,可以传递参数。而不使用的时候 不能传递参数

# Button(top, text="计算", command=lambda: on_click(top, base_text)).pack()
# top.mainloop()

# 这种 直接command = 方法名的方式,函数是不能传递参数的,所以为了能传递参数使用了上面的方法。
# Button(top, text="计算", command= on_click).pack()
原文地址:https://www.cnblogs.com/Skyyj/p/6697620.html