python 偏函数
前言
Python 有个模块,叫 fuctiontools,这个 functools 模块提供了很多有用的功能,,之前讲到的高阶函数 reduce 就在这个模块里,我们先看一下源码
在这个__all__属性列表里,还包含了一个 partial,这个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。
用法
普通函数里有默认参数,来兼容和降低传参的难度,偏函数也可以,举例如下:
例子 1
我们创建一个函数,用以处理不同的文件,默认处理 txt 文件下面是伪代码啊
如果要处理大量的 csv 文件,你想偷个懒,不想每次调用的时候都这样 operator(file_name, "csv"),那么我们可能会这样定义一个新函数
然后我们直接去调用 operator_csv 就好了
如果使用偏函数,就可以省略创建新函数这个步骤,
我们实际实验一下
总结
所以,简单总结 functools.partial 的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。
注意到上面的新的 operator_csv 函数,仅仅是把 file_type 参数重新设定默认值为 csv,但也可以在函数调用时传入其他值, 从例子可以看出来,偏函数就是把原来函数的默认值,变为了自己新定义的函数的默认值
最后,创建偏函数时,实际上可以接收函数对象、*args
和**kw
这 3 个参数,当传入:
实际上固定了 operator_file()函数的关键字参数file_type
,也就是:
相当于:
当函数的参数个数太多,需要简化时,使用 functools.partial 可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。
版权声明: 本文为 InfoQ 作者【红毛丹】的原创文章。
原文链接:【http://xie.infoq.cn/article/1123ddbc6dd5f149f8b3a1ddb】。文章转载请联系作者。
评论