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

functools.partial可以帮助我们创建一个偏函数,如下示例:

"""自己定义的偏函数"""

def int1(x, base=2):

return int(x, base)

print(int1('10000000')) # 128

# =======================================

# =======================================

"""通过functools.partial定义的偏函数"""

import functools

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

print(int1('10000000')) # 128

# 上面仅仅是把base参数重设默认值为2,所以还是可以指定base的值的

print(int1('10101010', base=10)) # 10101010

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

创建偏函数时,实际上可以接收函数对象、*args和**kwargs这3个参数***

像下面这样:

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

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

int2('10000000')

相当于:

kwargs = {'base': 2}

int('10000000', **kwargs)

再比如:

max2 = functools.partial(max, 10)

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

max2(2, 3, 4)

相当于:

args = (10, 2, 3, 4)

max(*args)

结果为10.

小结

当传入的参数个数太多,需要简化时,使用functools可以创建一个新的函数,这个新函数可以固定住原函数的部分参数,从而在调用时更简单。

python functools partial,【Python functools.partial 偏函数】相关推荐

  1. python functools_Python入门篇-functools

    Python入门篇-functools 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.reduce方法 reduce方法,顾名思义就是减少 reduce(function,se ...

  2. python基础包的functools的reduce方法-亢保星

    #!/usr/bin/env python #-- coding:utf-8 -- """ 一 functools介绍 1.functools 模块可以说主要是为 函数式 ...

  3. Python标准库:functools管理函数的工具

    functools管理函数的工具 functools模块提供了一些工具来调整或扩展函数和其他callable对象,从而不必完全重写. 1.修饰符 functools模块提供的主要工具就是partial ...

  4. python装饰器及functools模块

    python装饰器及functools模块 本文是笔者学习python装饰器以及functools模块的笔记. 在开始学习之前,先在此列举出python函数的一些特性: 一切皆对象:python函数也 ...

  5. Python标准库之 functools

    巨人的肩膀 Python标准库之 functools/itertools/operator 凉菜 functools, itertools, operator是Python标准库为我们提供的支持函数式 ...

  6. Python 缓存机制之functools.lru_cache

    说到缓存这个概念,我想大家应该都不陌生 ,以Redis和Memcache为代表的缓存应用基本成为了现在微服务架构的标配了. 事实上,并不是说要用缓存就必须部署Redis等服务,比如在以Python为开 ...

  7. 真的不建议学Python,煞笔才学习Python,学Python难?两个小时足够搞定

    对于Python这么语言,可以当作一门兴趣或爱好来学习,但是若是想找到份好的工作还是谨慎为主,这也是为什么不建议你搞Python的原因. 如果说,有些读者的学历非常牛逼,然后学习能力也非常强,那么选择 ...

  8. python装饰器-python修饰器(装饰器)以及wraps

    Python装饰器(decorator)是在程序开发中经常使用到的功能,合理使用装饰器,能让我们的程序如虎添翼. 装饰器的引入 初期及问题的诞生 假如现在在一个公司,有A B C三个业务部门,还有S一 ...

  9. 仅需10道题轻松掌握Python文件处理 | Python技能树征题

    仅需10道题轻松掌握Python文件处理 | Python技能树征题 0. 前言 1. 第 1 题:文件路径名的处理 2. 第 2 题:检测文件是否存在 3. 第 3 题:获取指定文件夹下的文件列表 ...

  10. 【Python随笔】python的web开发——WSGI、ASGI、uvicorn与FastAPI

    今天这篇文章,聊一下python在web开发上的一些基础实现,阐述下自己理解中的WSGI.ASGI,以及拿uvicorn+FastAPI的组合举个ASGI应用的例子. WSGI python的web服 ...

最新文章

  1. 频频曝出程序员被抓,我们该如何避免面向监狱编程?
  2. UA MATH567 高维统计III 随机矩阵10 亚高斯矩阵的应用:协方差估计与聚类问题的样本量需求计算
  3. 图解Oracle 12c创建数据挖掘(Data Miner)用户dmuser
  4. LinkedBlockingDeque源码
  5. 前端学习(2442):解决跨域问题
  6. 相似理论与模型试验_正交实验下的固液耦合相似材料研究
  7. 懒人建站 前台设计及特效
  8. Ogre学习笔记Basic Tutorial 前四课总结
  9. a算法和a*算法的区别_游戏寻路中 A* 算法的改进
  10. 【ASP.NET】 GriedView 增删改查+ 自带分页
  11. hello github
  12. 附资料:工程总承包项目管理流程图(全套)
  13. 【机器人学导论】 第二章.串联机器人
  14. Ajax的常用技巧(4)---实现数据库分页
  15. 判断dataGridView是否重复值
  16. iOS-Bug收集:You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated
  17. 迭代决策树GBDT(MART)【理论】
  18. 张凯复旦大学计算机学院,徐丰 - 师资队伍 - 复旦大学信息科学与工程学院
  19. UE4-(反射)平面反射
  20. 神奇的人工智能之神笔马良|Stable Diffusion使用

热门文章

  1. 专访罗永浩 锤子手机为精英服务屌丝走开 成为下一个苹果
  2. 火狐浏览器RESTED插件问题
  3. Android之获取手机UDID
  4. 仿糖护士曲线图写的一个CurveChartView
  5. 关于销量预测方法和采购备货问题
  6. Android之屏幕切换使用技巧
  7. 《中国制造业ERP研究报告》发布,带你看懂ERP行业最新发展趋势
  8. Neo4j 自定义函数
  9. UML中关联关系和依赖关系的区别
  10. 用 GraphScope 像 NetworkX 一样做图分析