Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save caoya171193579/891705422f07eeaea92f5be2b9bdc427 to your computer and use it in GitHub Desktop.
Save caoya171193579/891705422f07eeaea92f5be2b9bdc427 to your computer and use it in GitHub Desktop.
进阶
匿名函数:
lambda是快速定义单行的最小函数;
>>> x = lambda a,s:a*s #用lambda参数定义一个匿名函数x, 形参是a和s, 调用的时候取相乘的结果。
>>> x(5,6) #实参 为 5和6 值为相乘
30
1、使用python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
2、对于一些抽象的,不会别的地方在复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
3、使用lambda在某些时候让代码更容易理解。、
不用使用return(语句)来定义 返回值
用法 函数名=lambda 实参:怎么取值 x = lambda a,s:a*s
lambda 语句中,冒号前是参数,可以有个,用逗号隔开;冒号后面是返回值。
lambda 语句构建的其实是一个函数对象:
>>> x = lambda a,s:a*s
>>> print x
<function <lambda> at 0x7fed6d3e8668>
####################################################
>>> 8*7*6*5*4*3*2*1 #这叫阶乘, 8的阶乘,规律自己看
40320
>>>
lambda 应用实例
使用内置参数(reduce #瑞丢思儿) 此参数为逐次操作列表里的每项,接受的参数为2个,最后返回的为一个结果
>>> def x(a,s): #定义一个函数x,形参为 a,s
... return a*s #返回值为a乘以s
...
>>> l = range(1,6) #定义一个变量l ,值为1到5,五个整数,range 是用来定义整数的参数。
>>> l
[1, 2, 3, 4, 5] # l 的值
>>> reduce(x,l) # 内置参数reduce 形参未两个, 只会得到一个结果。
120
>>> x = lambda a,s:a*s # lambda 的用法在于 如果函数x 不会被重复使用,就用这一行代码代替会省去几行代码。
>>> x
<function <lambda> at 0x7fed6d3e88c0> #x 被定义为函数对象。
>>> reduce(x,l)
120
>>> reduce(lambda a,s:a*s , l) #取参数内a乘以s的值,这里形参l是一个变量,我们想取的就是l的值的阶乘 1*2*3*4*5 的结果。
120
>>> reduce(lambda a,s:a*s , range(1,8)) #这里我们没有提前定义变量,直接用range参数调用1到7,7个整数来做阶乘,然后reduce参数返回最后的结果。
5040
多个例子
>>> reduce(lambda a,s:a+s , range(1,8)) #1到7 相加
28
>>> reduce(lambda a,s:a-s , range(1,8)) #1-2-3-4-5-6-7
-26
>>> reduce(lambda a,s:a/s , range(1,8)) #1/2/3/4/5/6/7 =000000000
0
>>> reduce(lambda a,s:a==s , range(1,8))
False
>>> reduce (lambda x,y:x*x+y*y , range(1,5)) ???
1172
>>>
>>> a = lambda s:s*s #定义一个变量a 取值等于相乘的结果
>>> a
<function <lambda> at 0x7fed6d3e8938>
>>> a(9)
81
>>> ss=reduce (lambda x,y:x*y , range(1,5))
>>> ss
24
>>> ss=reduce(lambda x,y:x+y,(1,2,3)) #不用range 参数的话,后面的整数要一个一个写出来。同range(1,4) 的结果是一样。
>>> ss
6
>>> ss=reduce(lambda x,y:x*y,(1,2,3,4,5))
>>> ss
120
>>>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment