Python偏函数Partial function使用方法实例详解

 更新时间:2020年06月17日 09:16:05   作者:吞风吻雨ii  
这篇文章主要介绍了Python偏函数Partial function使用方法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。

要注意,这里的偏函数和数学意义上的偏函数不一样。

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

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

int('12345')
12345

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

int('12345', base=8)
5349

int('12345', 16)
74565

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

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

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

int2('1000000')
64
int2('1010101')
85

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

import functools
int2 = functools.partial(int, base=2)
int2('1000000')
64
int2('1010101')
85

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

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

int2('1000000', base=10)
1000000

最后,创建偏函数时,实际上可以接收函数对象、*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使用vars轻松获取对象属性

    Python使用vars轻松获取对象属性

    vars 是 Python 内置函数之一,它主要用于返回对象的 __dict__ 属性,本文将详细介绍 vars 函数的用法,包括其基本语法、应用场景等,有需要的可以参考下
    2024-12-12
  • PyCharm连接远程服务器配置的全过程

    PyCharm连接远程服务器配置的全过程

    这篇文章主要介绍了PyCharm连接远程服务器配置的全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • OpenCV-Python给图像去除水印多种方法

    OpenCV-Python给图像去除水印多种方法

    这篇文章主要给大家介绍了关于OpenCV-Python给图像去除水印的多种方法,文中介绍的每种方法都有其适用场景和实现步骤,具体实现需要根据实际情况选择和调整,需要的朋友可以参考下
    2024-12-12
  • 100 个 Python 小例子(练习题四)

    100 个 Python 小例子(练习题四)

    这篇文章主要给大家分享100 个 Python 小例子,前文分享了一二三,本文的四十最后一篇了,这篇就把100道python小练习全分享完了,感兴趣的小伙伴也可以去练习前几期内容,洗碗给这几篇文章给你的学习带来帮助
    2022-01-01
  • Python httplib模块使用实例

    Python httplib模块使用实例

    这篇文章主要介绍了Python httplib模块使用实例,httplib模块是一个底层基础模块,本文讲解了httplib模块的常用方法及使用实例,需要的朋友可以参考下
    2015-04-04
  • python高阶函数map()和reduce()实例解析

    python高阶函数map()和reduce()实例解析

    这篇文章主要介绍了python高阶函数map()和reduce()实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Python解决走迷宫问题算法示例

    Python解决走迷宫问题算法示例

    这篇文章主要介绍了Python解决走迷宫问题算法,结合实例形式分析了Python基于二维数组的深度优先遍历算法解决走迷宫问题相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • Ruby使用eventmachine为HTTP服务器添加文件下载功能

    Ruby使用eventmachine为HTTP服务器添加文件下载功能

    这篇文章主要介绍了Ruby使用eventmachine为HTTP服务器添加文件下载功能的实例,同时作者也分享了Windows上eventmachine安装报错问题的解决方法,需要的朋友可以参考下
    2016-04-04
  • Numpy的各种下标操作的示例代码

    Numpy的各种下标操作的示例代码

    本文主要介绍了Numpy的各种下标操作的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • pandas把dataframe转成Series,改变列中值的类型方法

    pandas把dataframe转成Series,改变列中值的类型方法

    下面小编就为大家分享一篇pandas把dataframe转成Series,改变列中值的类型方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04

最新评论