python几种特殊函数

169 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 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])

image-20220414221425382.png

这里说明了key是作为一个函数传参的