Python 函式引數傳遞字典


Python 是一種功能強大且用途廣泛的程式語言,它提供了各種資料結構來處理複雜資料。它們提供了一種靈活且高效的方式來組織和操作資訊,使其成為各種程式設計任務的熱門選擇。當處理複雜的資料結構或需要將多個相關值傳遞給函式而無需顯式定義許多單個引數時,此功能尤其有用。

在函式內訪問字典值

將字典作為引數傳遞後,可以使用函式內的鍵訪問其值。這允許您檢索特定資料或根據字典的內容執行操作。

要在函式內訪問字典值,可以使用熟悉的方括號表示法 ([]) 以及相應的鍵。讓我們來看一個例子:

示例

def print_name_age(person):
   print(f"Name: {person['name']}")
   print(f"Age: {person['age']}")

person_info = {'name': 'John Doe', 'age': 25}
print_name_age(person_info)

在上面的程式碼中,我們定義了一個名為 print_name_age 的函式,它將字典 person 作為引數。在函式內,我們使用各自的鍵 ('name' 和 'age') 訪問值並列印它們。

當我們呼叫函式並傳遞 person_info 字典時,它將檢索與鍵 'name' 和 'age' 關聯的值並顯示它們:

輸出

Name: John Doe
Age: 25

透過在函式內訪問字典值,您可以執行各種操作,例如列印、操作或在計算中使用它們,從而使您可以靈活地處理動態資料。

在函式內修改字典值

在 Python 中,字典是可變物件,這意味著可以修改它們的值。當字典作為引數傳遞給函式時,可以直接在函式內修改其值,並且更改將保留在函式作用域之外。

示例

讓我們來看一個例子,瞭解如何在函式內修改字典值:

def increment_age(person):
   person['age'] += 1

person_info = {'name': 'John Doe', 'age': 25}
print(f"Original age: {person_info['age']}")
increment_age(person_info)
print(f"New age: {person_info['age']}")

在上面的程式碼片段中,我們定義了一個名為 increment_age 的函式,它將字典 person 作為引數。在函式內,我們訪問字典的 'age' 鍵並將它的值加 1。

當我們呼叫 increment_age 函式並傳遞 person_info 字典時,它將修改字典中 'age' 的值。上述程式碼的輸出將是

輸出

Original age: 25
New age: 26

如您所見,person_info 字典中 'age' 的原始值在 increment_age 函式中從 25 修改為 26。

在函式內迭代字典

迭代字典允許您訪問和操作字典中的每個鍵值對。當您需要對字典中的所有項執行某些操作或計算時,這尤其有用。

要在函式內迭代字典,可以使用迴圈以及 items() 方法,該方法返回一個包含字典鍵值對的檢視物件。

示例

讓我們考慮一個例子:

def print_dict_items(dictionary):
   for key, value in dictionary.items():
      print(f"Key: {key}, Value: {value}")

person_info = {'name': 'John Doe', 'age': 25, 'country': 'USA'}
print_dict_items(person_info)

在上面的程式碼中,我們定義了一個名為 print_dict_items 的函式,它將字典 dictionary 作為引數。在函式內,我們使用 items() 方法迭代字典的項。對於每次迭代,我們將鍵值對解包到變數 key 和 value 中並列印它們。

當我們呼叫 print_dict_items 函式並傳遞 person_info 字典時,它將迭代字典的項並列印每個鍵值對:

輸出

Key: name, Value: John Doe
Key: age, Value: 25
Key: country, Value: USA

透過在函式內迭代字典,您可以對每個鍵值對執行各種操作,例如執行計算、過濾資料或應用特定邏輯。

將字典作為關鍵字引數傳遞

Python 提供了一種方便的方式將字典作為關鍵字引數傳遞給函式。這允許您在呼叫函式時使用字典的鍵作為引數名,並使用其對應值作為引數值。此技術簡化了傳遞多個引數的過程,並提供了一種簡潔易讀的語法。

要將字典作為關鍵字引數傳遞,可以在字典名前使用雙星號 (**) 表示法。讓我們來看一個例子,瞭解它是如何工作的:

示例

def print_person_details(name, age, country):
    print(f"Name: {name}")
    print(f"Age: {age}")
    print(f"Country: {country}")

person_info = {'name': 'John Doe', 'age': 25, 'country': 'USA'}
print_person_details(**person_info)

在上面的程式碼中,我們定義了一個名為 print_person_details 的函式,它期望三個引數:name、age 和 country。當我們呼叫函式時,我們沒有單獨傳遞引數,而是使用雙星號表示法 (**) 傳遞 person_info 字典。

字典的鍵 ('name'、'age' 和 'country') 與函式的引數名匹配,相應的值被分配給這些引數。結果,函式根據字典值列印人的詳細資訊:

輸出

Name: John Doe
Age: 25
Country: USA

當您有很多引數或引數列表可能會更改時,這種方法特別有用。但是,需要注意的是,字典的鍵必須與函式中的引數名匹配。否則,可能會遇到 TypeError 或意外行為。

使用解包將字典項作為函式引數傳遞

除了傳遞整個字典或將其用作關鍵字引數外,還可以解包字典中的特定項並將其作為單個引數傳遞給函式。此技術提供了對哪些字典項用作函式引數的精細控制。

要解包特定的字典項,可以在字典名前使用星號 (*) 表示法。讓我們來看一個例子:

示例

def print_name_age(name, age):
   print(f"Name: {name}")
   print(f"Age: {age}")

person_info = {'name': 'John Doe', 'age': 25, 'country': 'USA'}
print_name_age(**person_info)

在上面的程式碼中,我們定義了一個名為 print_name_age 的函式,它期望兩個引數:name 和 age。當我們呼叫函式時,我們使用雙星號表示法 (**) 傳遞 person_info 字典。

字典包含鍵 'name'、'age' 和 'country'。但是,由於我們只想解包 'name' 和 'age',因此只有這些項在呼叫函式時用作引數。在這種情況下,字典的 'country' 鍵被忽略。

結果,函式根據相應的字典值列印人的姓名和年齡:

輸出

Name: John Doe
Age: 25

值得注意的是,您要解包的鍵必須存在於字典中;否則,將引發 TypeError。

結論

在 Python 中,字典是強大的資料結構,允許您以鍵值對的形式儲存和操作資料。將字典作為引數傳遞給函式可以增強程式碼的靈活性和適應性,使您可以更有效地處理動態資料和複雜的資料結構。

更新於:2023年8月14日

5000+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.