Python的lambda表达式

使用lambda来创建匿名函数,而用def创建的方法是有名称的,除了从表面上的方法名不一样外,python lambda还有哪些和def不一样呢?

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

如果你在python 列表解析里用到python lambda,我感觉意义不是很大,因为python lambda它会创建一个函数对象,但马上又给丢弃了,因为你没有使用它的返回值,即那个函数对象。也正是由于lambda只是一个表达式,它可以直接作为python 列表python 字典的成员,比如:

info = [lambda a: a**3, lambda b: b**3]

在这个地方没有办法用def语句直接代替。因为def是语句,不是表达式不能嵌套在里面,lambda表达式在“:”后只能有一个表达式。也就是说,在def中,用return可以返回的也可以放在lambda后面,不能用return返回的也不能定义在python
lambda后面。因此,像if或for或print这种语句就不能用于lambda中,lambda一般只用来定义简单的函数。

三、lambda函数的用途

1. 对于单行函数,使用lambda可以省去定义函数的过程,让代码更加精简。

2. 在非多次调用的函数的情况下,lambda表达式即用既得,提高性能

3.  如果可以使用for...in...if来完成的,坚决不用lambda。

如果使用lambda,lambda内不要包含循环,如果有,我宁愿定义函数来完成,使代码获得可重用性和更好的可读性。

lambda 是为了减少单行函数的定义而存在的。

lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。

lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。

--------------------------------------------------------------

lambda 语法: lambda [arg1[,arg2,arg3....argN]]:expression

1. 单个参数的:
g = lambda x:x*2
print g(3)
结果是6

2. 多个参数的:
m = lambda x,y,z: (x-y)*z
print m(3,1,2)
结果是4

3. 无参数

f = lambda:‘beginman‘

f()   #beginman

4. lambda used in filter, map, reduce function.

print range(6)    # 0,1,2,3,4,5
print range(1,6)  # 1,2,3,4,5
print reduce(lambda x,y:x*y, range(1,6))  #1*2*3*4*5

5. lambda can be used in common def fucntion.

def action(x):
    return lambda y: x+y

f = action(2) # this is a lambda object
print f(3)    # 5

-------------------------------------------------------------------------------------------------------------------------------------

时间: 2024-11-05 09:38:03

Python的lambda表达式的相关文章

Python之lambda表达式和内置函数

lambda表达式其实就是简化的函数表达式. 它只用于处理简单逻辑, 它会自动return数据 通常定义一个函数,按照以下形式: def  func(arg):       return arg +1 result = func(100) print result 101 以上函数用lambda表达式可以这么写: func2 = lambda a: a+1 result = func2(100) print result 在lambda表达式中,func2 相当于函数表达式中的func,即函数的

Python基础-lambda表达式与三元运算

一.lambda表达式 1 >>> def add(x,y): #定义一个加法函数 2 return x+y #返回两个参数的相加的值 3 4 >>> z=f(3,4) 5 >>> print(z) 6 7 #调用加法函数返回7 7 >>> lambda x,y:x+y 8 <function <lambda> at 0x0000020F385B86A8> 9 #可以看到lambda是一个 function(函

python 中lambda表达式

一.lambda函数 1.lambda函数基础: lambda函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的.如下: [python] view plain copy """命名的foo函数""" def foo():return 'beginman' #Python中单行参数可以和标题写在一行 """lambda关键字创建匿名函数,该表达式同以上函数""" l

Python学习-lambda表达式

lambda只是一个表达式,函数体比def简单很多.lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去.lambda表达式是起到一个函数速写的作用.允许在代码内嵌入一个函数的定义. #求三个数的和1 f = lambda x,y,z:x+y+x 2 print(f(1,2,3)) #4 3 4 f = lambda x,y,z:x+y+z 5 print(f(1,2,3)) #6 在常规的def函数构造中,可以有任意数量的语句,并且在def函数定义中

python中lambda表达式应用

对于简单的函数,也存在一种简便的表示方式,即:lambda表达式 #普通函数1 def func(a): 2 return a+1 3 print 'test1_func0:',func(1000)4#lambda表达式 5 func0 = lambda a:a+1 6 print 'test2_func0:',func0(1000) 上面这种方法,都实现了将1000+1的结果打印出来这个功能,但是用下面 lambda存在意义就是对简单函数的简洁表示. 说道lambda,这里再赠送一些可以给la

#Python中lambda表达式学习

#出处:http://mp.weixin.qq.com/s?__biz=MjM5NzU0MzU0Nw==&mid=202117122&idx=1&sn=1cf1f3f8abce89850da0da685ba4e771#rd#lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去.#lambda表达式是起到一个函数速写的作用.允许在代码内嵌入一个函数的定义.#例如:f=lambda x,y,z:x+y+zprint f(1,2,3)#用lam

Python:lambda表达式实现求两个变量的最大值

lambda 表达式(又称匿名函数) 作用: 创建一个匿名函数对象 同def 类似,但不提供函数名 格式: lambda [参数1,参数2,.....]: 表达式(默认只能写一个) 说明: 1.lambda 只是一个表达式,它用来创建一个函数对象 2.当lambda表达式调用时,先执行冒号(:)后的表达式,并返回表达式的结果的引用关系 3.lambda 表达式创建的函数只能包含一条表达式 4.lambda 比函数简单且可以随时创建和销毁,有利于减少程序的偶合度 #方法1 def mymax(x,

Python 的lambda表达式的一些小细节

温故而知新,无意中发现以前实验lambda的时候写的测试代码,第一个反映就是,这是我写的????!!! 呵呵,想想XX语言刚把lambda正式加进去,python早早支持了,我可以大喊一声”Python是最好的语言“来找找骂吗? 哈哈. 不过,自从有了lambda,很多代码一行搞定.不过还是有很多不为一般人注意的小细节,详见下面代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3

Python函数:lambda表达式和过滤器

Lambda表达式是Python中一类特殊的定义函数的形式,使用它可以定义一个匿名函数.Python的Lambda表达式的函数体只能有唯一的一条语句,也就是返回值表达式语句. 语法:lambda 参数:返回值 参数个数不限 使用lambda表达式可以简化函数定义过程,也不必考虑函数命名的问题,增强代码可读性,一箭三雕 过滤器filter 语法 filter(function , sequence) 对sequence中的对象依次执行function,将执行结果为True的item组成一个List