一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第9天
递归函数
如果一个函数内部不调用其他函数而是自己本身的话,这个函数就是递归函数
递归示例:
def a():
print('a')
a()
a()
上述的递归没有出口,而python中有递归上限,所以会自动停止
def test():
if i == 10:
print('10') #出口
else:
print(i)
i += 1 #k靠近出口
test(i)
test(1)
- 要有出口
- 在每次递归完后要不断地靠近出口
示例(递归函数的兔子算法)
def sum(n):
if n == 0:
return 0
elif n == 1 or n == 2:
return 1
else:
return sum(n-2) + sum(n-1)
匿名函数
用lambda光建字创建小型匿名函数,这种函数得名于省略了用def声明函数的标准步骤,lambda函数的语法只包含一个语句。
lambda 参数列表:运算表达式
sum = lambda a,b : a+b
c = sum(1,2)
print(c)
>>>> 3
注意:匿名函数只能返回一个表达式的值
一般匿名函数都是放在函数的参数位置
高阶函数
因为函数可以看成一种数据类型function,而变量可以指向数据,参数可以接受变量,所以我们可以把一个函数作为参数传入另一个函数,而一个函数同样也可以作为另一个函数的返回值,这种形式的函数称为高阶函数
- python中使用函数作为参数的内置函数和类:
| 函数名或类名 | 功能 | 参数描述 |
|---|---|---|
| sorted函数 | 用来将一个无序列表进行排序 | 函数参数的返回值规定按照元素的哪个属性进行排列 |
| filter函数 | 用来过滤一个列表单符合规定的所有元素,得到的结果是一个迭代器 | 函数参数的返回值是满足指定条件的值 |
| map类 | 将列表中的每一项数据都执行相同的操作,得到的结果是一个迭代器 | 函数参数用来指定列表里元素所执行的操作 |
| reduce函数 | 对于一个序列进行压缩运算,得到一个值,python3以后这个方法被转移到了functools模块 | 函数参数用来指定元素按照那种方式合并 |
list1 =[('li',14),('wang',18),('zhao',20)]
max(list1,key=lambda x:x[1])
这里说明了key是作为一个函数传参的