-
Notifications
You must be signed in to change notification settings - Fork 91
好的,以下是 第3章:高階函數 的內容草稿:
在 Python 中,函數是一等公民(first-class citizen),這意味著我們可以像操作變數一樣操作函數。高階函數(Higher-Order Function)是指那些以函數作為參數,或返回值為函數的函數。高階函數在函數式編程中扮演著核心角色,因為它們允許我們創建抽象、模組化、以及可重用的代碼。
高階函數是指至少符合以下一個條件的函數:
- 接受一個或多個函數作為參數
- 返回一個函數作為結果
這種函數能夠使代碼更具可組合性與靈活性。
# 簡單範例:將函數作為參數傳遞
def apply_function(func, value):
return func(value)
def square(x):
return x * x
print(apply_function(square, 5)) # 結果為 25在這個範例中,apply_function 是一個高階函數,因為它接受另一個函數 square 作為參數。
map、filter 和 reduce 是 Python 中三個非常常見的高階函數,它們經常用於對資料進行轉換、過濾和聚合。
map 函數將一個函數應用到一個可迭代對象的每一個元素,並返回一個新的可迭代對象。
# 使用 map 將平方運算應用到每個元素
numbers = [1, 2, 3, 4]
squared_numbers = list(map(square, numbers))
print(squared_numbers) # 結果為 [1, 4, 9, 16]filter 函數用來過濾序列中的元素,只有滿足條件的元素會被保留。
# 過濾出偶數
def is_even(x):
return x % 2 == 0
even_numbers = list(filter(is_even, numbers))
print(even_numbers) # 結果為 [2, 4]reduce 函數逐步將序列中的元素聚合為單一結果。它位於 functools 模組中,需要手動引入。
from functools import reduce
# 使用 reduce 計算累積乘積
def multiply(x, y):
return x * y
product = reduce(multiply, numbers)
print(product) # 結果為 24高階函數的強大之處在於可以將函數作為參數傳遞或作為結果返回。這使得我們能夠創建具有高度抽象性和靈活性的代碼。
# 返回一個新的函數
def create_multiplier(n):
def multiplier(x):
return x * n
return multiplier
doubler = create_multiplier(2)
print(doubler(5)) # 結果為 10在這個例子中,create_multiplier 函數返回了一個新的函數 multiplier,該函數可以根據不同的參數生成不同的乘法運算器。
高階函數在函數式編程中扮演著重要的角色,它們不僅能使代碼更加簡潔和易於理解,還能增強代碼的可重用性與組合性。通過學習 map、filter、reduce 等常用的高階函數,我們可以更加靈活地處理資料轉換與處理邏輯。在接下來的章節中,我們將進一步探討函數式編程中的其他概念,如純函數與閉包。
這是第3章的基本內容草稿,你可以根據具體需求進行進一步的調整或擴展。
從希爾伯特到圖靈的那些故事
-- 以 Python 展現這些故事背後的程式