Python 中的函數
本文介紹了 Python 中的函數。
YouTube Video
Python 中的函數
Python 中的函數是定義可重用代碼塊的重要功能,它允許您按需調用,從而組織和簡化程序。使用函數可以提高代碼可讀性並遵循 DRY 原則(不要重複自己,即避免多次編寫相同代碼)。
定義函數
函數是使用 def 關鍵字定義的。基本語法如下:。
1def function_name(arg1, arg2, ..., argN):
2 """docstring (A brief description of the function)"""
3 processing
4 return return_value例如,若要定義一個將兩個數相加的函數,您可以這樣編寫:。
1def add(x, y):
2 """A function that adds two numbers and returns the result"""
3 return x + y調用函數
定義好的函數可以按以下方式調用並使用:。
1result = add(3, 4)
2print(result) # Output: 7函數的組成部分
-
函式名稱
- 函式的名稱,用於呼叫時使用。
-
引數(參數)
- 在呼叫時接收傳入資料的變數名稱。您可以定義零個或多個參數。
-
文件字串(Docstring)
- 描述函式用途與使用方式的字串。可選。
-
函式主體
- 撰寫函式執行內容的縮排區塊。
-
回傳值
- 透過
return陳述式傳回給呼叫者的值。如果省略return,則默認返回None。
- 透過
參數的類型
在 Python 中,有幾種類型的參數。
- 位置引數
- 傳遞引數給函式的常見方式。
- 預設引數
- 給引數指定預設值,使呼叫函式時可以省略。
1def greet(name, message="Hello"):
2 print(f"{message}, {name}")
3
4greet("Alice") # "Hello, Alice"
5greet("Bob", "Good morning") # "Good morning, Bob"- 可變長度引數
args以元組(tuple)接收多個位置引數,kwargs則以字典(dictionary)接收。
1def func(*args, **kwargs):
2 print("args:", args)
3 print("kwargs:", kwargs)
4
5func(1, 2, 3, a=4, b=5)
6# Output:
7# args: (1, 2, 3)
8# kwargs: {'a': 4, 'b': 5}通過正確使用函式,您可以更有效率地編寫 Python 程式。
Python 中的 Lambda 函式
在 Python 中,lambda 函式用於定義匿名且簡潔的函式。與使用 def 關鍵字定義的普通函式不同,lambda 允許您創建簡短的單行函式。在這裡,我們將詳細說明 Python 中的 lambda 函式。
lambda 函式的基礎知識
lambda 函式,也稱為匿名函式,用來定義沒有名稱的臨時函式,顧名思義。基本語法如下:。
1lambda arguments: expressionarguments- 指定函式的引數。可以指定多個引數,並用逗號分隔。
expression- 根據引數運算評估的運算式。表達式的計算結果成為函式的返回值。
例如,以下程式碼定義並執行了一個用於相加兩個數字的 lambda 函式。
1add = lambda x, y: x + y
2print(add(5, 3)) # Output: 8在這個範例中,lambda x, y: x + y 是一個 lambda 函式,接受兩個引數 x 和 y,並返回它們的總和。
lambda 函式的使用場景
lambda 函式適用於需要臨時定義簡單函式的場景。它們在以下情況中特別常見:。
-
作為函式的引數傳遞時
- 當傳遞簡短的臨時函式時,它在高階函式(以其他函式作為參數的函式)中很有用。
-
為列表的排序鍵指定條件時
- 它們適合用於函式如
sort()或sorted()中指定排序條件(鍵)。
- 它們適合用於函式如
在高階函式中的範例使用
高階函式的典型範例包括 map()、filter() 和 reduce()。這些函式將其他函式作為引數並應用於如列表等序列。
1numbers = [1, 2, 3, 4, 5]
2squared = list(map(lambda x: x ** 2, numbers))
3print(squared) # Output: [1, 4, 9, 16, 25]在這個範例中,一個 lambda 函式被傳遞給 map() 函式,用來計算列表中每個數字的平方。
使用列表排序的示例
lambda 函式有時可以用於在排序列表時指定自定義的鍵。例如,以下程式碼根據元組的第二個元素對列表進行排序。
1pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
2pairs.sort(key=lambda pair: pair[1])
3print(pairs)
4# Output: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]在此示例中,使用 lambda 函式根據元組的第二個元素(一個字串)進行排序。
filter() 和 lambda
filter() 函式用於根據給定條件篩選列表(或其他可迭代物件)中的元素。
1numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
2even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
3print(even_numbers) # Output: [2, 4, 6, 8]在此示例中,篩選出列表中的偶數來創建新列表。
lambda 和 reduce()
reduce() 函式用於將列表縮減為單一值。可以使用 lambda 函式輕鬆實現。
1from functools import reduce
2
3numbers = [1, 2, 3, 4, 5]
4product = reduce(lambda x, y: x * y, numbers)
5print(product) # Output: 120在此示例中,將列表中的所有元素相乘以生成結果。
避免使用複雜的 lambda 函式
lambda 函式的優勢在於簡潔,但用於實現複雜邏輯時會變得難以閱讀。因此,適合將其用於可以用一行表示的簡單操作。對於複雜操作,使用 def 定義函式更具可讀性和可維護性。
例如,應避免使用如下所示的複雜 lambda 函式。
1# Complex and hard-to-read lambda function
2complex_func = lambda x, y: (x * 2 + y) if x > y else (x + y * 2)在此情況下,更應使用如下所示的 def 定義函式。
1def complex_func(x, y):
2 if x > y:
3 return x * 2 + y
4 else:
5 return x + y * 2結論
Python 的 lambda 函式是定義臨時短函式的便利工具。它們通常用於高階函式或列表操作中,簡潔地定義特定條件。然而,lambda 函式應限於簡單任務,對於複雜邏輯應更傾向使用 def 函式。
您可以在我們的 YouTube 頻道上使用 Visual Studio Code 來跟隨上述文章一起學習。 請也查看我們的 YouTube 頻道。