Python中的 lamda表达式
lambda
语句被用来建立新的函数对象,而且在运行时返回它们。python lambda是在python中使用lambda来建立匿名函数,而用def建立的方法是有名称的,除了从表面上的方法名不同外,python lambda还有哪些和def不同呢?
1 python lambda会建立一个函数对象,但不会把这个函数对象赋给一个标识符,而def则会把函数对象赋值给一个变量。
2 python lambda它只是一个表达式,而def则是一个语句。
python
lambda表达式在“:”后只能有一个表达式。也就是说,在def中,用return能够返回的也能够放在lambda后面,不能用return返回的也不能定义在python lambda后面。所以,像if或for或print这种语句就不能用于lambda中,lambda通常只用来定义简单的函数。
函数
<span style="font-size:18px;">def make_repeater(n): return lambda s: s*n twice = make_repeater(2) print(twice('word')) print(twice(5))</span>
这里,咱们使用了make_repeater
函数在运行时建立新的函数对象,而且返回它。lambda
语句用来建立函数对象。本质上,lambda
须要参数(多是多个参数),后面仅跟单个表达式做为函数体,而表达式的值被这个新建的函数返回。注意,即使是print
语句也不能用在lambda形式中,只能使用表达式。
spa
咱们来看更多例子:code
1 单个参数的:
对象
g = lambda x:x*2 print(g(3))
2 多个参数的:
class
m = lambda x,y,z: (x-y)*z print( m(3,1,2))(x,y,z是函数的形参,(x-y)*z是函数体)