iT邦幫忙

0

Python 高階函式:Higher-Order Function當作變數使用

  • 分享至 

  • xImage
  •  

什麼是高階函式?

在 Python 中,函數不僅可以接受數值、字串等基本數據類型作為參數,
還可以接受其他函數作為參數,甚至可以返回一個函數。
這種將函數作為變數來使用的特性,就是所謂的 高階函數 (Higher-Order Function)。

高階函式的應用場景

  • 回呼函數 (Callback function): 將函數作為參數傳遞給另一個函數,以便在特定的事件發生時執行。
  • 裝飾器 (Decorator): 用來修改其他函數的功能,例如,添加日志記錄、性能測量等。
  • lambda 表達式: 一種匿名函數,可以簡化函數的定義。
  • map、filter、reduce: Python 內建的高階函數,用於對可迭代對象進行映射、過濾和歸約操作。
函數 描述 示例
map(function, iterable) 將函數應用於可迭代對象的每個元素,並返回一個新的迭代器。 list(map(lambda x: x*2, [1, 2, 3]))[2, 4, 6]
filter(function, iterable) 過濾可迭代對象中的元素,返回一個新的迭代器,其中包含使函數返回 True 的元素。 list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4]))[2, 4]
reduce(function, iterable) 將函數應用於可迭代對象的元素,從左到右累積結果。 from functools import reduce; reduce(lambda x, y: x+y, [1, 2, 3])6

範例:使用高階函數實現排序

def sort_by_length(words):
    """根據字串長度排序"""
    return sorted(words, key=len)

words = ['apple', 'banana', 'cherry']
print(sort_by_length(words))  # 输出: ['apple', 'cherry', 'banana']

在上面的例子中,sorted 函數是一個高階函數,它接受一個 key 參數,這個參數是一個函數,用於指定排序的關鍵字。我們傳入了一個 lambda 表達式 len 作為 key,表示根據每個元素的長度進行排序。

高階函數的好處

程式碼更簡潔: 高階函數可以減少重複代碼,提高程式碼的可讀性。
程式碼更靈活: 通過傳遞不同的函數作為參數,可以實現不同的功能。
函數式程式設計: 高階函數是函數式程式設計的重要概念,它可以幫助我們寫出更抽象、更具有表達力的程式碼。

關鍵點:

  • 函數可以作為變數傳遞
  • 函數可以作為參數
  • 函數可以返回函數

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言