http://blog.csdn.net/pipisorry/article/details/26863141

functools模块介绍

functools用于高阶函数:指那些作用于函数或者返回其他函数的函数。通常情况下,只要是可以被当做函数调用的对象就是这个模块的目标。(The functools module is for higher-order functions: functions that act on or return other functions. In general, any callable object can be treated as a function for the purposes of this module.)

偏函数-functools.partial()

functools.partial(func[,*args][, **keywords]

partial是针对函数起作用的,并且是部分的;而装饰器是对函数进行包装,算是对函数的整体进行处理(其实是对输入和输出)。部分的话其实只有对参数进行部分处理了。

函数的大致意思就是提前给函数绑定几个参数。即functools.partial的作用是把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单。

使用示例

示例1:

有这样的函数:get_useragent(request) 用来获取用户浏览器的ua信息,但是这个函数又不是在主体函数(执行页面渲染的函数)get时调用的,只在模板中的一个filter中调用的(可以理解是在模板渲染时调用的),而filter在执行的时候是不能添加参数的,要怎么处理。

def get(self, request, *args, **kwargs):
    context = {
        'ua_filter': functools.partial(get_useragent, **{"request": request})
    }
    self.render('index.html', context)

/* 对应的大致页面代码如下 */
user-agent: {% ua_filter %}

示例2:

[解决闭包的后期绑定问题]

示例3:

在tensorflow.map_fn对data中每条数据处理时,arg_value是个值,data是数据流,这时使用偏函数解决其它参数如arg问题。

def logit2labels(data, arg):
    ...

在tensorflow.map_fn(partial(python_func, arg=arg_value), data)

示例3.1:

def cal(x, arg1, args2):
    try:

x[old_col] = args1...args2...x[old_col]

except:

print("x[old_col]:", x[old_col])

df.loc[:, new_col] = df.apply(functools.partial(cal, args1=args1, args2=args2), axis=1)

示例4:

def say(name, age):
    print(name, age)

func = functools.partial(say, age=5)
func('the5fire')

# 结果是: the5fire 5

from:http://blog.csdn.net/pipisorry/article/details/26863141

ref:python中functools宝库下的partial

python模块 - functools模块相关推荐

  1. Python的functools模块

    Python的functools模块 functools 模块可以说主要是为函数式编程而设计,用于增强函数功能. functools模块用以为可调用对象(callable objects)定义高阶函数 ...

  2. Python中functools模块函数解析

    Python自带的 functools 模块提供了一些常用的高阶函数,也就是用于处理其它函数的特殊函数.换言之,就是能使用该模块对可调用对象进行处理. functools模块函数概览 functool ...

  3. python 之 functools模块

    functools模块用于高阶函数:作用于或返回其他函数的函数.一般而言,任何可调用对象都可以作为本模块用途的函数来处理. 官方文档已经有了详尽的介绍,这里就不在复述,详情请见:官方文档 .这里主要介 ...

  4. Python之functools模块使用方法

    functools reduce方法:     reduce方法,顾名思义就是减少     reduce(function,sequence[,initial]=>value)     可迭代对 ...

  5. python functools模块(主要是为函数式编程而设计,用于增强函数功能,主要为可调用对象(callable objects)定义高阶函数或操作)

    参考文章1:Python的functools模块 参考文章2:尝试修改LabelImg,将以对顶角画框改成以对角线相交点画框

  6. python装饰器及functools模块

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

  7. Python 标准库 functools 模块详解

    functools 官方文档:https://docs.python.org/zh-cn/3/library/functools.html Python 标准模块 --- functools:http ...

  8. Python库functools详解

    functools模块是Python的标准库的一部分,它是为高阶函数而实现的.高阶函数是作用于或返回另一个函数或多个函数的函数.一般来说,对这个模块而言,任何可调用的对象都可以作为一个函数来处理. f ...

  9. python函数进阶小结_Python-进阶-functools模块小结

    文档 地址 functools.partial 作用: functools.partial 通过包装手法,允许我们 "重新定义" 函数签名 用一些默认参数包装一个可调用对象,返回结 ...

  10. python中的functools模块

    functools模块可以作用于所有的可以被调用的对象,包括函数 定义了__call__方法的类等 1 functools.cmp_to_key(func) 将比较函数(接受两个参数,通过比较两个参数 ...

最新文章

  1. python使用openweathermap API获取全世界主要城市天气信息
  2. javascript中构造函数的返回值问题和new对象的过程
  3. 调用接口登录禅道_第三方应用配置免密登录禅道
  4. 简单介绍:什么是Python?Python好学吗?
  5. LinkedHashSet集合
  6. 工作五年再回首java---开篇
  7. [svc]容器网络学习索引及网络监控
  8. 数据库索引的概念和分类
  9. 国美零售带货直播 重构本地零售数字化生产力
  10. 微信任意用户密码修改漏洞分析
  11. ep服务器修改时间,BIOS揭秘 手把手教你设置Nehalem平台
  12. 万年历—Java计算感恩节是哪天?感恩节是哪一天?2017年感恩节是哪一天?
  13. 【转】 HMC与VIOS对新LPAR提供存储与网络虚拟化的支持
  14. java中计算一段时间内白天的时间和夜晚的时间
  15. MapReduce解决乘用车辆和商用车辆的销售数据分析
  16. 戴维宁(也叫戴维南)定理是什么?如何证明?_戴维宁定理等效电路求解_戴维宁定理习题
  17. 网站被挂木马病毒了,怎么办?
  18. 深度报告:国产6大传统数据库
  19. 【转载】三种证明欧拉恒等式的方法(3 methods of proving Euler's Formula )
  20. 英译汉在线翻译器如何实现英文语音翻译中文

热门文章

  1. DB2数据库用 With语句分隔字符
  2. C语言之内存分配函数
  3. 游戏设计亦或课件设计
  4. shiro的详细讲解
  5. Codeforces Round #309 (Div. 1) A(组合数学)
  6. win10系统的快捷键
  7. Python全栈之路——运算符(Day 02)
  8. mybatis---知识点复习
  9. asp不能做到的是什么
  10. 推荐算法竞赛TOP解决方案汇总