Python:高阶函数,柯里化Currying

本文探讨了Python中的高阶函数,包括它们作为First Class Object的特性,以及接受和输出函数的能力。重点介绍了内键高阶函数如`sorted`、`filter`和`map`的使用,并详细解释了柯里化的概念,展示了如何将一个接受两个参数的函数转换为接受一个参数的柯里化函数。示例中展示了加法函数的柯里化实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高阶函数

First Class Object

  • 函数在Python中是一等公民
  • 函数也是对象,可调用的对象
  • 函数也是对象,可调用的对象

高阶函数

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

栈里面存放的是,函数的变量,压栈过程是有序的,堆里面存放的是调用函数的对象的变量,是无序的

 内键高阶函数【常用的】

排序:sorted(iterable[, key][, reverse])

  • 返回一个新的列表,对一个可迭代对象的所有元素排序,排序规则为key定义的函数,reverse表示是 否排序翻转

过滤:filter(function, iterable) --> filter object

  • 过滤可迭代对象的元素,返回一个迭代器
  • function一个具有一个参数的函数,返回bool
  • 例如,过滤出数列中能被3整除的数字
    • list(filter(lambda x: x%3==0, [1,9,55,150,-3,78,28,123]))

映射:map(func, *iterables) --> map object

  • 对多个可迭代对象的元素按照指定的函数进行映射,返回一个迭代器
    • list(map(lambda x:2*x+1, range(5)))
    • dict(map(lambda x: (x%5,x) , range(500))

 柯里化

  • 指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第 二个参数为参数的函数

  • z = f(x, y) 转换成 z = f(x)(y)的形式

 

举例
​​

将加法函数柯里化

def add(x, y):
    return x + y

柯里化后

def add(x):
    def _add(y):
        return x + y
    return _add

print(add(5)(7))    #12

通过嵌套函数就可以把函数转换成柯里化函数

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值