匿名函数
关键字lambda表示匿名函数,冒号前面的x表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
func=lambda x:x+1
print(func(50))
#注释:x表示一个形参,func(50)把实参50传给形参x,return返回的值是50+1
不带任何参数的写法:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
s = lambda : 'hello,world'
print(s())
# 注释:直接return返回执行结果
lambda返回多个值:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
s = lambda x,y,z:(x+1,y+1,z+1)
print(s(1,2,3))
#注释:lambda在返回多个值的时候要用 () 括号括起来;在def的函数中不用
例如
def func(x,y,z):
return x+1,y+1,z+1
print(func(1,2,3))
等价于:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
def func(x):
return x+1
print(func(50))
另类写法:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
s = lambda x:"yes" if x%2==1 else "no"
print(s(50))
上面例子中,将if...else语句缩减为单一的条件表达式,语法为:
expression1 if A else expression2
如果A为True,条件表达式的结果为expression1,否则为expression2
# 注释:x表示一个形参,func(50)把实参50传给形参x,然后判断x是否等于1,如果等于1就return返回yes 否者return返回no,这里为什么有写print 因为lambda是直接return表达式结果