摘要:?本文清晰地解釋了Python中的不同參數(shù)傳遞類型,并提供了示例代碼來說明每種類型的用法。對于初學者或不清楚Python傳參的讀者們來說是非常有益的,文中提供了足夠的信息來理解和使用Python中的函數(shù)參數(shù)傳遞。
本文分享自華為云社區(qū)《提升Python函數(shù)調(diào)用靈活性:參數(shù)傳遞類型詳解》,作者:frica01 。
前言
在Python編程中,函數(shù)參數(shù)起著非常重要的作用。函數(shù)參數(shù)允許我們向函數(shù)傳遞數(shù)據(jù),并在函數(shù)內(nèi)部使用這些值。Python提供了多種參數(shù)傳遞類型,包括位置參數(shù)、關鍵字參數(shù)、默認參數(shù)、可變數(shù)量的位置參數(shù)、可變數(shù)量的關鍵字參數(shù)。這些不同的參數(shù)傳遞方式使得函數(shù)調(diào)用更加靈活和可擴展。本文就來具體聊聊它們。
什么是Python傳參
在 Python 中,傳參是指在函數(shù)調(diào)用過程中將數(shù)據(jù)傳遞給函數(shù)的過程。傳參允許我們向函數(shù)傳遞數(shù)據(jù),以便在函數(shù)內(nèi)部使用這些數(shù)據(jù)進行操作和處理。
在 Python 中,函數(shù)定義時使用的參數(shù)稱為形式參數(shù),也稱為形參。形參是在函數(shù)定義過程中用來接收傳遞給函數(shù)的值的占位符。形參在函數(shù)體內(nèi)被當作變量來使用,可以在函數(shù)體中進行操作和處理。
實際參數(shù),也稱為實參,是在函數(shù)調(diào)用時傳遞給函數(shù)的值或變量。實參是實際傳遞給函數(shù)的具體數(shù)值或對象。當我們調(diào)用一個函數(shù)時,需要為函數(shù)的形參提供相應的實參,這樣函數(shù)才能執(zhí)行相應的操作。
下面是一個簡單的示例:
def demo(name): print("Hello, " + name + "!") demo("Frica")
在上面的例子中,name 是函數(shù) demo 的形參。
在函數(shù)調(diào)用時,傳遞了實參 Frica 給函數(shù) demo,它被賦值給形參 name,然后函數(shù)體內(nèi)部使用這個值進行打印操作。
總結起來,形參是函數(shù)定義中用于接收傳遞給函數(shù)的值的占位符,而實參是在函數(shù)調(diào)用時實際傳遞給函數(shù)的具體數(shù)值或對象。形參和實參的對應關系使得函數(shù)能夠處理和操作具體的數(shù)據(jù)。
五種傳參類型
傳參類型可以單獨使用,也可以組合使用。根據(jù)需要在函數(shù)定義中靈活地選擇使用這些傳參類型。
以下是Python中常見的幾種傳參類型:
- 位置參數(shù):位置參數(shù)是最常見的參數(shù)類型,通過按照參數(shù)定義的順序提供參數(shù)值;
- 關鍵字參數(shù):關鍵字參數(shù)允許使用參數(shù)的名稱來指定值,而不必按照順序提供參數(shù);
- 默認參數(shù):默認參數(shù)允許為函數(shù)的一個或多個參數(shù)提供默認值。如果在函數(shù)調(diào)用時沒有提供參數(shù)值,函數(shù)將使用默認值;
- 可變數(shù)量的位置參數(shù):可變數(shù)量的位置參數(shù)允許接受任意數(shù)量的位置參數(shù)。在函數(shù)定義中,使用星號(*)來指定一個可變數(shù)量的位置參數(shù),如果沒有提供額外的位置參數(shù),args將是一個空元組(());
- 可變數(shù)量的關鍵字參數(shù):可變數(shù)量的關鍵字參數(shù)允許接受任意數(shù)量的關鍵字參數(shù)。在函數(shù)定義中,使用雙星號(**)來指定一個可變數(shù)量的關鍵字參數(shù),如果沒有提供額外的關鍵字參數(shù),kwargs將是一個空字典({})。
位置傳參
位置參數(shù):位置參數(shù)是最常見的參數(shù)類型。當定義一個函數(shù)時,可以指定一個或多個位置參數(shù)。在調(diào)用函數(shù)時,需要按照參數(shù)的順序提供對應的值。例如:
def demo(name, age): print("Hello", name, "!") print("You are", age, "years old.") demo("Frica", 25)
在上面的例子中,name 和 age 是位置參數(shù),按照順序分別提供 “Frica” 和 25 作為參數(shù)值。
關鍵字傳參
關鍵字參數(shù):關鍵字參數(shù)允許你使用參數(shù)的名稱來指定值,而不必按照順序提供參數(shù)。使用關鍵字參數(shù)可以使代碼更加清晰和易讀。例如:
def demo(name, age): print("Hello", name, "!") print("You are", age, "years old.") demo(age=25, name="Frica")
在上面的例子中,通過使用 age=25 和 name="Frica" 來指定參數(shù)的值,而不必考慮它們的順序。
默認傳參
默認參數(shù):默認參數(shù)允許為函數(shù)的一個或多個參數(shù)提供默認值。
如果在函數(shù)調(diào)用時沒有提供參數(shù)值,函數(shù)將使用默認值。默認參數(shù)通常在函數(shù)定義中指定,并且必須要位于位置參數(shù)之后(否則會有SyntaxError異常)。例如:
def demo(name, age=18): print("Hello", name, "!") print("You are", age, "years old.") demo("Frica") # 使用默認值18 demo("Frica01", 25) # 覆蓋默認值
在上面的例子中,age 參數(shù)有一個默認值 18。如果沒有為 age 提供參數(shù)值,函數(shù)將使用默認值。
可變數(shù)量的位置傳參
一般我們會使用 *args,當然,使用其它的變量也可以(這里的關鍵是 *,而不是args。
可變數(shù)量的位置傳參:可變數(shù)量的位置參數(shù)允許接受任意數(shù)量的位置參數(shù)。在可能不確定函數(shù)會接受多少個參數(shù)的情況下,可以使用可變數(shù)量的參數(shù)。在函數(shù)定義中,可以使用星號(*)來指定一個可變數(shù)量的位置參數(shù)。例如:
def print_info(*args): print(type(args))# 輸出: <class 'tuple'> total = sum(num for num in args) return total result = print_info(1, 2, 3, 4, 5)
print(result) # 輸出:15
在上面的例子中,print_info 函數(shù)接受任意數(shù)量的位置參數(shù),并將它們相加。
可變數(shù)量的關鍵字傳參
一般我們會使用 **kwargs,當然,使用其它的變量也可以(這里的關鍵是 **,而不是kwargs。
可變數(shù)量的關鍵字參數(shù)傳遞:可變數(shù)量的關鍵字參數(shù)允許接受任意數(shù)量的關鍵字參數(shù)。在函數(shù)定義中,可以使用雙星號(**)來指定一個可變數(shù)量的關鍵字參數(shù)。例如:
def print_info(**kwargs): print(type(kwargs)) # 輸出: <class 'dict'> for key, value in kwargs.items(): print(key, ":", value) print_info(name="Frica", age=25, city="GuangZhou")
在上面的例子中,demo 函數(shù)接受任意數(shù)量的關鍵字參數(shù),并將它們打印出來。
多種傳參類型組合
def print_info(name, *args, age=18, **kwargs): print("Name:", name) print("Age:", age) print("Additional arguments:") for arg in args: print("-", arg) print("Keyword arguments:") for key, value in kwargs.items(): print("-", key, ":", value) print_info("Frica", "arg1", "arg2", age=25, city="GuangZhou", country="China")
在上面的例子中,函數(shù)print_info接受以下參數(shù):
- name是一個位置參數(shù),必須提供值。
- *args是一個可變數(shù)量的位置參數(shù),可以接受任意數(shù)量的額外參數(shù)。
- age是一個具有默認值的關鍵字參數(shù)。
- **kwargs是一個可變數(shù)量的關鍵字參數(shù),可以接受任意數(shù)量的關鍵字參數(shù)。
通過調(diào)用print_info函數(shù),并提供相應的參數(shù),可以靈活地組合使用這些參數(shù)類型。在函數(shù)體內(nèi)部,可以根據(jù)需要訪問和處理這些參數(shù)。
當調(diào)用print_info函數(shù)時,輸出如下:
Name: Frica Age: 25 Additional arguments: - arg1 - arg2 Keyword arguments: - city : GuangZhou - country : China
這個例子展示了多種傳參類型的組合,包括位置參數(shù)、可變數(shù)量的位置參數(shù)、具有默認值的關鍵字參數(shù)和可變數(shù)量的關鍵字參數(shù)。讀者可以根據(jù)實際的開發(fā)需求,在函數(shù)中靈活使用這些參數(shù)類型。
函數(shù)參數(shù)類型注解
這里以位置參數(shù)為例,
def demo(name: str, age: int) -> str: return "Hello, " + name + "! You are " + str(age) + " years old." print(demo("Frica", 25))# 輸出: Hello, Frica! You are 25 years old.
在這個例子中,參數(shù) name 的類型被注解為字符串類型 str,參數(shù) age 的類型被注解為整數(shù)類型 int,返回值的類型被注解為字符串類型 str。參數(shù)類型注解可以提供類型提示,幫助開發(fā)者更好地理解函數(shù)的參數(shù)和返回值的預期類型。
當然,這里只相當于是注釋,即使傳入的是其它類型是數(shù)據(jù),也不會報錯?。?!
總結
本文介紹了Python中函數(shù)參數(shù)的不同類型和傳遞方式。
- 位置參數(shù)是最常見的參數(shù)類型,按照參數(shù)定義的順序提供參數(shù)值。
- 關鍵字參數(shù)允許使用參數(shù)名稱來指定值,提高了代碼的可讀性。
- 默認參數(shù)為函數(shù)的一個或多個參數(shù)提供默認值,在函數(shù)調(diào)用時可以選擇性地提供參數(shù)值。
- 可變數(shù)量的位置參數(shù)和可變數(shù)量的關鍵字參數(shù)允許接受任意數(shù)量的位置參數(shù)和關鍵字參數(shù),提供了處理不確定數(shù)量參數(shù)的便利性。
在函數(shù)定義中,我們可以根據(jù)需要靈活地選擇使用這些參數(shù)傳遞類型,以滿足開發(fā)的需求。通過合理選擇參數(shù)傳遞類型,可以使得函數(shù)調(diào)用更加方便、可讀,并提高代碼的可擴展性。
?文章來源:http://www.zghlxwxcb.cn/news/detail-486081.html
點擊關注,第一時間了解華為云新鮮技術~文章來源地址http://www.zghlxwxcb.cn/news/detail-486081.html
到了這里,關于Python初學者友好丨詳解參數(shù)傳遞類型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!