Skip to content
ccckmit edited this page Dec 4, 2024 · 1 revision

好的,以下是 第3章:高階函數 的內容草稿:


第3章:高階函數

在 Python 中,函數是一等公民(first-class citizen),這意味著我們可以像操作變數一樣操作函數。高階函數(Higher-Order Function)是指那些以函數作為參數,或返回值為函數的函數。高階函數在函數式編程中扮演著核心角色,因為它們允許我們創建抽象、模組化、以及可重用的代碼。

3.1 什麼是高階函數?

高階函數是指至少符合以下一個條件的函數:

  1. 接受一個或多個函數作為參數
  2. 返回一個函數作為結果

這種函數能夠使代碼更具可組合性與靈活性。

# 簡單範例:將函數作為參數傳遞
def apply_function(func, value):
    return func(value)

def square(x):
    return x * x

print(apply_function(square, 5))  # 結果為 25

在這個範例中,apply_function 是一個高階函數,因為它接受另一個函數 square 作為參數。

3.2 map、filter、reduce

mapfilterreduce 是 Python 中三個非常常見的高階函數,它們經常用於對資料進行轉換、過濾和聚合。

3.2.1 map

map 函數將一個函數應用到一個可迭代對象的每一個元素,並返回一個新的可迭代對象。

# 使用 map 將平方運算應用到每個元素
numbers = [1, 2, 3, 4]
squared_numbers = list(map(square, numbers))
print(squared_numbers)  # 結果為 [1, 4, 9, 16]
3.2.2 filter

filter 函數用來過濾序列中的元素,只有滿足條件的元素會被保留。

# 過濾出偶數
def is_even(x):
    return x % 2 == 0

even_numbers = list(filter(is_even, numbers))
print(even_numbers)  # 結果為 [2, 4]
3.2.3 reduce

reduce 函數逐步將序列中的元素聚合為單一結果。它位於 functools 模組中,需要手動引入。

from functools import reduce

# 使用 reduce 計算累積乘積
def multiply(x, y):
    return x * y

product = reduce(multiply, numbers)
print(product)  # 結果為 24

3.3 函數作為參數與返回值

高階函數的強大之處在於可以將函數作為參數傳遞或作為結果返回。這使得我們能夠創建具有高度抽象性和靈活性的代碼。

# 返回一個新的函數
def create_multiplier(n):
    def multiplier(x):
        return x * n
    return multiplier

doubler = create_multiplier(2)
print(doubler(5))  # 結果為 10

在這個例子中,create_multiplier 函數返回了一個新的函數 multiplier,該函數可以根據不同的參數生成不同的乘法運算器。

3.4 小結

高階函數在函數式編程中扮演著重要的角色,它們不僅能使代碼更加簡潔和易於理解,還能增強代碼的可重用性與組合性。通過學習 mapfilterreduce 等常用的高階函數,我們可以更加靈活地處理資料轉換與處理邏輯。在接下來的章節中,我們將進一步探討函數式編程中的其他概念,如純函數與閉包。


這是第3章的基本內容草稿,你可以根據具體需求進行進一步的調整或擴展。

Clone this wiki locally