Python中递归函数与匿名、高阶函数

92 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第31天,点击查看活动详情

一、递归函数

如果一个函数在内部不调用其他函数,而是调用自己本身的话,那么这个函数就是递归函数。 遵循:

  1. 必须要有出口
  2. 每次递归都要向出口靠近

例:

def add_num(i):
    if i == 10:
        return i
    else:
        return i + add_num(i+1)


print(add_num(1))

效果: 在这里插入图片描述


二、匿名函数

lambda关键词能创建小型匿名函数。这种函数的命名省略了def声明函数的标准步骤。 格式:

lambda 参数列表: 返回运算表达式

匿名函数的使用场合: 1、匿名参数作为参数去使用:

def func1(a, f):
    r = f(a)
    print(r)


func1(8, lambda x: x * 2)

在这里插入图片描述

4.1、高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,同样,我们还可以把一个函数当作另一个函数的返回值,这周函数的使用方式我们称之为高阶函数。

系统的高阶函数:max()、min()、sorted() 在这里插入图片描述 在这里插入图片描述 min()、sorted()用法跟以上max()类似。


系统的高阶函数(过滤):filter(None or function, Iteratable) 返回可迭代的filter object,把结果转成list就行。


list1 = [{'name': 'tom', 'age': 19},
         {'name': 'rose', 'age':  20},
         {'name': 'jack', 'age':  22},
         {'name': 'Jane', 'age': 17}]

r = filter(lambda x: x['age'] > 18, list1)
print(r)
print(list(r))

效果: 在这里插入图片描述


系统的高阶函数(映射提取出来某项):map(None or function, Iteratable)


list1 = [{'name': 'tom', 'age': 19},
         {'name': 'rose', 'age':  20},
         {'name': 'jack', 'age':  22},
         {'name': 'Jane', 'age': 17}]

r = map(lambda x: x['name'].title(), list1)
print(r)
print(list(r))

效果: 在这里插入图片描述


函数工具里的高阶函数(对一个序列进行压缩运算,得到累加的值):reduce(function, sequence, initial=_initial_missing)

from functools import reduce

r = reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
print(r)

在这里插入图片描述


如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持