美文网首页
python 函数式编程之偏函数

python 函数式编程之偏函数

作者: Swift社区 | 来源:发表于2019-06-30 06:39 被阅读0次

python学习笔记,特做记录,分享给大家,希望对大家有所帮助。

偏函数

Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。

在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点。举例如下:

int()函数可以把字符串转换为整数,当仅传入字符串时,int()函数默认按十进制转换:

print int('123456')

运行结果:

123456

Process finished with exit code 0

但int()函数还提供额外的base参数,默认值为10。如果传入base参数,就可以做N进制的转换:

print int('123456', base=8)
print int('123456', 16)

运行结果:

42798
1193046

Process finished with exit code 0

假设要转换大量的二进制字符串,每次都传入int(x, base=2)非常麻烦,于是,我们想到,可以定义一个int2()的函数,默认把base=2传进去:

def int2(x, base=2):
    return int(x, base)

这样,我们转换二进制就非常方便了:

def int2(x, base=2):
    return int(x, base)
print int2('1000000')
print int2('1010101')

这样,我们转换二进制就非常方便了,运行结果:

64
85

Process finished with exit code 0

functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:

import functools
inttwo = functools.partial(int, base=2)
print inttwo('1000000')
print inttwo('1010101')

运行结果:

64
85

Process finished with exit code 0

所以,简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

注意到上面的新的int2函数,仅仅是把base参数重新设定默认值为2,但也可以在函数调用时传入其他值:

print inttwo('1000000', base=10)

运行结果:

1000000

Process finished with exit code 0

最后,创建偏函数时,实际上可以接收函数对象、args和*kw这3个参数,当传入:

int2 = functools.partial(int, base=2)

实际上固定了int()函数的关键字参数base,也就是:

int2('10010')

相当于:

kw = { 'base': 2 }
int('10010', **kw)

当传入:

max2 = functools.partial(max, 10)

实际上会把10作为*args的一部分自动加到左边,也就是:

max2(5, 6, 7)

相当于:

args = (10, 5, 6, 7)
max(*args)

结果为10。

欢迎关注公众号「网罗开发」,可领取python测试demo和学习资源,大家一起学python,网罗天下方法,方便你我开发

相关文章

  • python 函数式编程之偏函数

    python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 偏函数 Python的functools模块提供...

  • Clojure 学习笔记 :11 函数组合

    Clojure 零基础 学习笔记 偏函数 串行宏 高阶函数 闭包 函数组合 --- 简单而又有力的武器 在函数式编...

  • Python函数式介绍一 - 高阶函数

    Python函数式介绍一 - 高阶函数Python函数式介绍二 - 链式调用 最近为了给朋友推广Python函数式...

  • Python 之路03 - Python基础3

    本节内容 函数与函数式编程 函数式编程之参数详解 局部变量与全局变量作用域嵌套函数 递归 函数式编程介绍 高阶函数...

  • python中偏函数的应用

    1 简介 偏函数在Python 2.5 版本中添加进来,是函数式编程一系列重要改进中的一部分。使用偏函数,可以通过...

  • python 函数式编程之匿名函数

    python学习笔记,特做记录,分享给大家,希望对大家有所帮助。 匿名函数 当我们在传入函数时,有些时候,不需要显...

  • 高阶python 函数式编程

    高阶python 函数式编程 - 函数式 函数式编程(FunctionalProgramming) - 基于lam...

  • python函数式编程-高阶函数与偏函数

    高阶函数 python 的函数不仅能接收普通的参数,还可以接收一个函数本身作为参数,这样的函数称为高阶函数 fil...

  • pyspark api 解读一

    pyspark 是spark的python api 公有类信息: SparkContext: spark 函数式编...

  • 函数式编程

    什么是函数式编程? 函数式:functional 一种编程范式 函数式编程特点 把计算视为函数而非指令 纯函数式编...

网友评论

      本文标题:python 函数式编程之偏函数

      本文链接:https://www.haomeiwen.com/subject/kcbtcctx.html