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