def max2(x,y): if x>y: return x else: return y res=max2(10,11) print(res)
①三元表达式就是取代上述代码的if判断,将他写成一行。
x=10 y=11 res=x if x>y else y
三元表达式仅针对条件成立或者不成立,
定义
def max2(x,y): return x if x>y else y print(max2(10,11))
②函数的递归
1.直接调用
def foo(): print('from foo') foo() foo
2.间接调用
def bar(): print('from bar') foo() def foo(): print('from foo') bar() foo()
递归分为两个阶段
1.回溯 一定要满足某种条件回溯,否则无限递归
2.递推
=================================
递归其实就是循环过程
=================================
递归比循环有优势
1.while循环需要知道循环多少次,
2.递归只需要把控一个条件,根本不用考虑多少次做完
=================================
③匿名函数及其应用
lambda x y:return x +y
max
min
sorted
map
reduce
filter
有名函数: def跟函数名
匿名函数:没有return,相当于自带return (匿名函数相当于避孕套,随用随丢)
匿名函数不会单独使用,通常是和其他函数一起使用
#强调
1.匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的
2.匿名函数的参数规则,作用域关系与有名函数是一样的。
3.匿名函数的函数体通常应该是一个表达式,该表达式必须有一个返回值
f=lambda x,n: x>n
什么时候用匿名函数呢?
函数体非常简单的时候
例如
有名函数:def func(x,y,z): return x+y+z 匿名函数:lambda x,y,z: x+y+z (自带return)
内置函数
lambda与map,reduce,fileter
nums=[1,2,3,4,5]
map()
reduce nums[1,2,3,4,5]
filter
map()映射关系 name=['alex','wu pei qi','yuanhao'] res=map(lambda x:x+'_SB',names) print(list(res)) [name]=['alex','wupeiqi','yuanhao','egon'] res=map(lambda+ x:x+'_SB',names) [name]=['alex','wupeiqi','yuanhao','egon'] res=map(lambda x:x+'_NB'+'_SB',names)
from funtools import reduce
reduce(range(1,101))
reduce()合并的意思 from functools import reduce res=reduce(lamda x,y:x+y,range(1,101)) print(res)
filter()过滤功能