博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从源码带你看懂functools的partial方法
阅读量:7087 次
发布时间:2019-06-28

本文共 804 字,大约阅读时间需要 2 分钟。

1.what?

  partial是什么, partial也叫偏函数。源码的描述是: 部分应用给定参数和关键字的新函数。

New function with partial application of the given arguments and keywords.

  

2.how?

  怎么去用它呢?官方文档给出的例子如下:

>>>from functools import partial>>>basetwo = partial(int, base=2)>>>basetwo.__doc__ 'Convert base 2 string to an int.'>>>basetwo('10010')18

  以上的例子可能你有点茫然看不懂, 那我给你解释一下

    1.  首先明白int能干嘛, int可以将一个数转换为十进制的数, 这里int需要两个参数:一个是我们需要转换的数, 第二个是指定需要转换的数是多少进制的

    2. 然后我们用partical传入了int和base=2, 这是什么意思呢, 就是说我已经给你int指定了我要传的数是一个二进制的数

    3. 最后这由生成的函数附给了basetwo, 后面我们就只需要传一个数给basetwo就可以实现int的功能了

  总结: 预先给某个函数传部分参数, 在后续的使用中只需要传剩下的参数

 

3.源码解析

首先我们的partial( )调用了partial的__call__方法, 所以我们直接去看__call__就好了

很简单的几行代码, 相信大家都能看懂, 我们忽略前三行, 只需要看第四行和最后一行就能理解, 将自己和给出的参数赋值给args形成新的参数, 最后返回一个函数并把新的参数传入,形成新的方法。

转载于:https://www.cnblogs.com/liusijun113/p/11019243.html

你可能感兴趣的文章
关于子类对象的构造函数和父类构造函数的执行顺序
查看>>
.NET Core Web 应用部署到 Docker 中运行
查看>>
Saltstack-API(十二)
查看>>
Asp.net Boilerplate源码中NotNullAttribute的用处
查看>>
javascript继承
查看>>
待处理
查看>>
linux下在root用户登陆状态下,以指定用户运行脚本程序实现方式
查看>>
FB面经Prepare: Merge K sorted Array
查看>>
模拟链表
查看>>
C#中使用SendMessage在进程间传递数据的实例
查看>>
ADT Android Development Tools
查看>>
OpenGL ES 简单教程
查看>>
nvidia显卡驱动卸载和卸载后的问题
查看>>
Java集合源码分析(二)Linkedlist
查看>>
SpringBoot四大神器之Actuator
查看>>
html复习之标签整理
查看>>
Yii2 使用 faker 生成假数据(转)
查看>>
Consul安装使用
查看>>
tomcat事件处理机制
查看>>
JS BUG 传递数字过大,数据值会变化
查看>>