`

Python functools

 
阅读更多

原文地址:
http://2057.iteye.com/blog/1798472


首先看下functools包含的方法

Python代码  收藏代码
Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin 
 
Type "help", "copyright", "credits" or "license" for more information. 
 
>>> import functools 
 
>>> dir(functools) 
 
['WRAPPER_ASSIGNMENTS', 'WRAPPER_UPDATES', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'cmp_to_key', 'partial', 'reduce', 'total_ordering', 'update_wrapper', 'wraps'] 


一、partial函数

他可以重新绑定函数的可选参数,生成一个callable的partial对象

对于已知的函数参数若可以提前获知,可以减少更多的参数调用。 (就是减少输入参数)

Python代码  收藏代码
In [16]: from functools import partial 
In [17]: int2 = partial(int, base=2) 
In [18]: int2('10') 
Out[18]: 2 

实例:

from operator import add

import functools

print add(1,2)

"""

输出:

3

"""

add1 = functools.partial(add,1)

print add1(10)

"""

输出:

11

"""


二、wraps

wraps主要是用来包装函数,使被包装含数更像原函数,它是对partial(update_wrapper, ...)的简单包装,partial主要是用来修改函数签名,使一些参数固化,以提供一个更简单的函数供以后调用
update_wrapper是wraps的主要功能提供者,它负责考贝原函数的属性,默认是:'__module__', '__name__', '__doc__', '__dict__'。

Python代码  收藏代码
>>> from functools import wraps 
>>> def my_decorator(f): 
...     @wraps(f)       
...     def wrapper(*args, **kwds): 
...         print 'Calling decorated function' 
...         return f(*args, **kwds) 
...     return wrapper 
... 
>>> @my_decorator 
... def example(): 
...     """Docstring""" 
...     print 'Called example function' 
... 
>>> example() 
Calling decorated function 
Called example function 
>>> example.__name__ 
'example' 
>>> example.__doc__  
'Docstring' 


三、reduce

function的reduce与python内置的reduce是一样的

reduce()函数:reduce(func,seq[,init]),用二元函数func对序列seq中的元素进行处理,每次处理两个数据项(一个是前次处理的结果,一个是序列中的下一个元素),如此反复的递归处理,最后对整个序列求出一个单一的返回值。

Python代码  收藏代码
>>> l=[1,2,3,4,5,6] 
 
>>> reduce((lambda x,y:x+y),l) 
 
21 
 
>>> import functools 
 
>>> functools.reduce((lambda x,y:x+y),l) 
 
21 



参考资料:

http://docs.python.org/2/library/functools.html

http://www.cnblogs.com/huxi/archive/2011/03/01/1967600.html

http://blog.csdn.net/baizhiwen_2005/article/details/1181770

 

分享到:
评论

相关推荐

    Python functools——高阶函数.7z

    在Python编程语言中,`functools`模块是标准库的一部分,它提供了许多有用的函数,尤其是与函数操作相关的工具。这个模块的目的是增强函数的功能,提高代码的复用性和可读性。`functools`模块是实现高级编程技术,如...

    Python使用functools模块中的partial函数生成偏函数

    Python标准库中的`functools`模块提供了`partial`函数,用于生成偏函数。 `functools.partial`的工作原理是,它接受一个原函数和一些额外的参数(包括位置参数和关键字参数),然后创建一个新的函数,这个新函数在...

    Python中functools模块函数解析

    ### Python中functools模块函数解析 #### 一、引言 `functools`是Python标准库中的一个重要模块,提供了许多高级功能来处理函数。本文将深入介绍`functools`模块中的一些常用函数,包括`cmp_to_key`、`total_...

    python2-functools32-3.2.3.2-1.el7.noarch.rpm

    官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装

    Python库 | coveo_functools-1.0.7-py3-none-any.whl

    《Python库解析:coveo_functools-1.0.7-py3-none-any.whl》 在Python编程世界中,库是开发者们的重要工具,它们提供了丰富的功能,简化了复杂的任务处理。本文将深入探讨名为“coveo_functools”的Python库,其...

    Python3标准库之functools管理函数的工具详解

    在Python3标准库中,`functools`模块是一个非常重要的工具,它提供了一系列高级函数,用于处理其他可调用对象,如函数、方法等。本文将深入探讨`functools`模块中的主要功能,尤其是`partial`类,以及如何使用它来...

    Python中functools模块的常用函数解析

    ### Python中functools模块的常用函数解析 `functools`模块是Python标准库中的一个强大工具,它提供了一系列用于处理函数的功能。本篇文章将会详细介绍`functools`模块中的一些常用函数,包括`partial`、`update_...

    Python使用functools实现注解同步方法

    Python 3.2版本之后引入的functools模块提供了wraps函数,可以用来复制原函数的元数据到装饰器中创建的新函数上,这使得我们可以更加优雅地实现装饰器。 本文主要探讨如何使用functools模块结合装饰器模式来实现...

    Python中使用partial改变方法默认参数实例

    Python标准库中的`functools`模块提供了一个非常有用的工具——`partial`,它允许我们将部分参数预先设置好,从而创建一个新的函数,这个新函数具有与原函数相同的功能,但具有不同的默认参数值。下面我们将深入探讨...

    Python库 | coveo_functools-2.0.10-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:coveo_functools-2.0.10-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python优化算法工具包-整理一份可以让Python变得更快的工具清单,排序算法数据结构 最快的排序算法

    itertools和functools是Python内置的两个模块,提供了多种函数可以帮助开发者优化Python代码。这些函数可以帮助开发者实现高效的代码。 5. NumPy、SciPy、Sage和Pandas NumPy、SciPy、Sage和Pandas是四个常用的...

    浅谈python标准库--functools.partial

    Python的`functools`模块是标准库中的一部分,它包含了一些高级函数,这些函数主要用于操作其他函数。本文重点讨论`functools.partial`,这是一个非常实用的功能,它允许我们预设函数的一部分参数,从而创建出新的、...

    Python 3.8中实现functools.cached_property功能

    `functools.cached_property` 是 Python 3.8 中新增的一个特性,它是一个装饰器,用于将一个方法转换为缓存的属性。这个功能在处理计算密集型或需要复杂计算的属性时非常有用,因为它可以避免多次重复计算同一属性的...

    python2.5--安装包

    5. **函数式编程**:增加了`functools`模块,提供了高阶函数,如`partial`,用于创建部分应用函数,以及`reduce`,用于将函数应用于序列的累积操作。 6. **装饰器**:Python 2.5引入了正式的装饰器语法,允许程序员...

    Python 3.7.17 for Windows 自编译版

    5. **新的内置函数**:例如`fold()`(在Python 3.7中称为`functools.reduce()`),用于对序列进行累积操作。 6. **字典更新视图**:允许直接在字典视图上进行修改,如`d.viewitems().update(...)`。 7. **安全的...

    PyPI 官网下载 | coveo_functools-1.0.3-py3-none-any.whl

    `coveo_functools`是Coveo公司开发的一个Python实用工具库,它扩展了Python内置的`functools`模块,提供了额外的功能和便利性。`functools`模块本身是Python标准库的一部分,专注于函数式编程,包括高阶函数如`...

    PyPI 官网下载 | backports.functools_lru_cache-1.3.tar.gz

    《PyPI上的backports.functools_lru_cache-1.3.tar.gz:Python高效缓存技术解析》 在Python编程中,高效的代码执行是至关重要的,特别是在处理大量数据或者需要频繁重复计算的场景下。PyPI(Python Package Index)...

Global site tag (gtag.js) - Google Analytics