python中高阶函数

一等公民
  • 函数在python中是一等公民(First-Class Object)
  • 函数既是对象,是可调用对象
  • 函数也可以作为普通变量,也可以作为函数的参数、返回值
高阶函数

高阶函数(High-order Function)

  • 数学概念 y=f(g(x))
  • 在数学和计算机中,高阶函数应当是至少满足下面一个条件的函数
    • 接受一个或多个函数作为参数
    • 输出一个函数
def counter(base):
    def inc(step=1):
        nonlocal base
        base+=step
        return base
    return inc

上面的counter是高阶函数,因为return inc,即返回函数
f1=counter(5),f2=counter(5)
f1==f2?
在这里插入图片描述

内建高阶函数

排序sorted
sorted(iterable,*,key=None,reverse=False)-> 立即修改,返回新列表
过滤filter

  • 定义filter(function,iterable)
  • 对可迭代对象进行遍历,返回一个迭代器
  • function参数是一个参数的函数,且返回值应当是bool类型,或其返回值等效布尔值
  • function参数如果是None,可迭代对象的每一个元素自身的等效布尔值
list(filter(None,range(5)))
list(filter(lambda x:1,range(5)))
list(filter(lambda x:x%2==0,range(5)))

在这里插入图片描述
映射map

  • 定义map(function,*iterable)->map object
  • 对多个可迭代对象的元素,按照指定的元素进行映射
  • 返回一个迭代器
list(map(lambda x:2,range(4)))
list(map(lambda x,y:{x+ord(y)},range(4),'abcde'))

在这里插入图片描述

柯里化
  • 指的是将原来接受两个参数的函数编程新的接受一个参数的函数的过程。新的函数返回一个以原有第二个数为参数的函数
def add(x,y):
    return x+y
add(2,3)

可以转换为

def add(x):
    def num(y):
        return x+y
    return num
add(2)(3)

在这里插入图片描述
嵌套函数可以转成柯里化函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值