非常教程

Python参考手册

数字与数学 | Numeric & Mathematical

functools

2.5版本中的新功能。

源代码: Lib / functools.py

functools模块用于高阶函数:作用于或返回其他函数的函数。一般而言,任何可调用对象都可以作为本模块用途的函数来处理。

functools模块定义了以下功能:

functools.cmp_to_key(func)

将旧式比较功能转换为按键功能。使用接受钥匙功能的工具(如sorted()min()max()heapq.nlargest()heapq.nsmallest()itertools.groupby())。此函数主要用作转换为Python 3的程序的转换工具,其中不再支持比较函数。

比较函数是可接受两个参数的任何可调用函数,比较它们,并返回一个负数,小于等于零,或者返回大于等于零的正数。关键函数是可调用的,它接受一个参数并返回另一个值作为排序关键字。

例:

sorted(iterable, key=cmp_to_key(locale.strcoll))  # locale-aware sort order

有关排序示例和简要的排序教程,请参阅对如何排序。

2.7版本的新功能。

functools.total_ordering(cls)

给定一个定义一个或多个比较排序方法的类,这个类装饰器提供剩余的。这简化了指定所有可能的丰富比较操作的工作:

这个类必须定义之一__lt__()__le__()__gt__(),或__ge__()。另外,班级应该提供一种__eq__()方法。

例如:

@total_ordering
class Student:
    def __eq__(self, other):
        return ((self.lastname.lower(), self.firstname.lower()) ==
                (other.lastname.lower(), other.firstname.lower()))
    def __lt__(self, other):
        return ((self.lastname.lower(), self.firstname.lower()) <
                (other.lastname.lower(), other.firstname.lower()))

2.7版本的新功能。

functools.reduce(function, iterable[, initializer])

这与功能相同reduce()。它在本模块中可用,以允许编写更多与Python 3向前兼容的代码。

2.6版本中的新功能。

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

返回一个新的partial对象,当被调用时,它的行为就像调用参数args和关键字参数关键字的func。如果更多的参数被提供给调用,它们被附加到参数。如果提供了其他关键字参数,它们将扩展并覆盖关键字。大致相当于:

def partial(func, *args, **keywords):
    def newfunc(*fargs, **fkeywords):
        newkeywords = keywords.copy()
        newkeywords.update(fkeywords)
        return func(*(args + fargs), **newkeywords)
    newfunc.func = func
    newfunc.args = args
    newfunc.keywords = keywords
    return newfunc

所述partial()用于局部功能应用其中“冻结”的函数的参数和/或产生具有简化签名的新对象的关键字一些部分。例如,partial()可用于创建一个可调用的行为,int()其中的基本参数默认为两个:

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

functools.update_wrapper(wrapper, wrapped[, assigned][, updated])

包装函数更新为看起来像包装函数。可选参数是元组,用于指定将原始函数的哪些属性直接分配给包装函数上的匹配属性,以及使用原始函数的相应属性更新包装函数的哪些属性。这些参数的默认值是模块级别常量WRAPPER_ASSIGNMENTS(分配给包装函数的___name__ __module__ __doc__ ,文档字符串)和_WRAPPER_UPDATES(它更新包装函数的___dict__,即实例字典)。

该函数的主要用途是装饰器函数,它包装装饰后的函数并返回包装器。如果包装函数未更新,则返回的函数的元数据将反映包装器定义而不是原始函数定义,这通常不太有用。

functools.wraps(wrapped[, assigned][, updated])

这是update_wrapper()在定义包装函数时作为函数装饰器调用的便利函数。这相当于partial(update_wrapper, wrapped=wrapped, assigned=assigned, updated=updated)。例如:

>>> 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'

如果没有使用这个装饰器工厂,示例函数的名称应该是这样'wrapper',并且原始文档字符串example()已经丢失。

1.部分对象

partial对象是由可创建的可调用对象partial()。他们有三个只读属性:

partial.func

可调用的对象或函数。调用partial对象将被转发给func新的参数和关键字。

partial.args

将被提供给partial对象调用的位置参数前置的最左边的位置参数。

partial.keywords

partial调用对象时将提供的关键字参数。

partial对象就像function对象一样可以被调用,弱引用,并且可以有属性。有一些重要的区别。例如,__name____doc__属性不会自动创建。此外,partial类中定义的对象的行为与静态方法相似,并且在实例属性查找期间不会转换为绑定方法。

数字与数学 | Numeric & Mathematical相关

Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法