Python自帶的functools
模組為函數式程式設計提供了許多工具函數。它可以使程式碼更加簡潔、可讀性更高,並且提供了一些高階函數和函數式程式設計的基本工具。本文將介紹functools
模組的幾個常用函數,並提供程式碼範例。
partial
函數partial
函數用於部分應用函數,即固定函數的某些參數,返回一個新的函數。範例程式碼如下:
from functools import partial def multiply(x, y): return x * y double = partial(multiply, 2) triple = partial(multiply, 3) print(double(4)) # 输出8 print(triple(4)) # 输出12
在上述程式碼中,partial
函數將multiply
函數的第一個參數固定為2或3,回傳了新的函數double
和triple
。當呼叫double
函數時,實際上是呼叫了multiply(2, 4)
,回傳了結果8。
reduce
函數reduce
函數用於對一個序列中的元素進行累積計算,傳回單一的結果。需要透過from functools import reduce
導入該函數。範例程式碼如下:
from functools import reduce def add(x, y): return x + y numbers = [1, 2, 3, 4, 5] result = reduce(add, numbers) print(result) # 输出15
在上述程式碼中,reduce
函數將add
函數套用到序列numbers
中的元素,從左到右右依序累積求和,返回最後的結果15。
map
函數map
函數用於對一個序列中的每個元素應用函數,並傳回一個新的序列。範例程式碼如下:
def square(x): return x ** 2 numbers = [1, 2, 3, 4, 5] squared_numbers = list(map(square, numbers)) print(squared_numbers) # 输出[1, 4, 9, 16, 25]
在上述程式碼中,map
函數將square
函數套用到序列numbers
中的每個元素,並傳回一個新的序列squared_numbers
。
filter
函數filter
函數用來對一個序列中的每個元素應用一個條件判斷函數,傳回滿足條件的元素的新序列。範例程式碼如下:
def is_even(x): return x % 2 == 0 numbers = [1, 2, 3, 4, 5] even_numbers = list(filter(is_even, numbers)) print(even_numbers) # 输出[2, 4]
在上述程式碼中,filter
函數將is_even
函數套用到序列numbers
中的每個元素,並傳回一個新的序列even_numbers
,只包含滿足條件的元素。
透過使用functools
模組提供的函數,我們可以使用更簡潔和可讀性更高的程式碼實現函數式程式設計的想法。以上介紹的partial
、reduce
、map
和filter
是functools
模組中較常用的函數,可以在實際項目中應用。
以上是Python 3.x 中如何使用functools模組進行函數式程式設計的詳細內容。更多資訊請關注PHP中文網其他相關文章!