Functools — Python 中的高阶函数和对可调用对象的运算
在 Python 中,函数被称为高阶函数。这意味着它可以作为参数传递给另一个函数,并且/或者可以返回另一个函数。functools 模块为这种高阶函数提供了重要的实用程序。
partial() 函数
此函数返回一个可调用的“partial”对象。该对象本身的行为类似于函数。partial() 函数接收另一个函数作为参数,并冻结函数参数的一部分,从而产生一个具有简化签名的新的对象。
内置的 int() 函数将数字转换为十进制整数。int() 的默认签名是
int(x, base = 10)
partial() 函数可用于创建可调用的函数,其行为类似于 int() 函数,其中 base 参数默认为二。
>>> import functools
>>> binint = functools.partial(int, base = 2)
>>> binint('1001')
9在以下示例中,用户定义的函数 myfunction() 被用作 partial 函数的参数,通过在原始函数的参数之一上设置默认值来实现。
>>> def myfunction(a,b): return a*b >>> partfunction = functools.partial(myfunction,b = 10) >>> partfunction(10) 100
partialmethod()
此函数返回一个新的 partialmethod 描述符,其行为类似于 partial,但不同之处在于它被设计为用作方法定义,而不是直接可调用。
Cmp_to_key() 函数
Python 2.x 具有用于比较两个对象的 cmp() 函数。Python 3 已弃用它。functools 模块提供了 cmp_to_key() 函数,通过该函数可以执行用户定义类对象的比较
from functools import cmp_to_key class test: def __init__(self,x): self.x = x def __str__(self): return str(self.x) def cmpr( a,b): if a.x> = b.x: return True if a.x<b.x: return False mykey = cmp_to_key(cmpr)
reduce() 函数
reduce() 函数接收两个参数,一个函数和一个可迭代对象。但是,它返回单个值。参数函数累积地应用于列表中的两个参数,从左到右。函数在第一次调用中的结果成为第一个参数,列表中的第三个项目成为第二个。这将重复进行,直到列表用尽。
在下面的示例中,定义了 mult() 函数以返回两个数字的乘积。此函数与 1 到 10 之间的数字范围一起用于 reduce() 函数中。输出是 10 的阶乘值。
import functools
def mult(x,y):
return x*y
num = functools.reduce(mult, range(1,11))
print ('factorial of 10: ',num)输出
factorial of 10: 3628800
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP