Python函數(shù)參數(shù)類型及傳參方式詳解
Python函數(shù)參數(shù)類型
Python函數(shù)參數(shù)主要分為以下幾種類型:
位置參數(shù)(Positional Arguments)
- 最常見的參數(shù)類型
- 調(diào)用時必須按定義順序傳遞
- 數(shù)量和順序必須匹配函數(shù)定義
def foo(name,age):
"""
位置參數(shù),按位置對應來傳遞參數(shù)
"""
print(f"第一個參數(shù):{name},第二個參數(shù){age}")
# test code
foo("Alice", 18)
foo(18, "Alice")第一個參數(shù):Alice,第二個參數(shù)18 第一個參數(shù):18,第二個參數(shù)Alice
當傳入的兩個參數(shù)位置調(diào)換之后,輸出結(jié)果也會調(diào)換。所以位置參數(shù)必須嚴格按照對應位置來傳遞。
關鍵字參數(shù)(Keyword Arguments)
- 調(diào)用時通過參數(shù)名指定值
- 可以不按定義順序傳遞
- 提高代碼可讀性
def foo(name, age):
"""
關鍵字參數(shù),根據(jù)指定的關鍵字傳遞參數(shù),與參數(shù)的位置不相關
:return:
"""
print(f"第一個參數(shù):{name},第二個參數(shù){age}")
# test code
foo(name="Alice", age=18)
foo(age=18, name="Alice")第一個參數(shù):Alice,第二個參數(shù)18 第一個參數(shù):Alice,第二個參數(shù)18
可以看到兩種不同位置的傳參,輸出都是同一個結(jié)果。
默認參數(shù)(Default Arguments)
- 在函數(shù)定義時指定默認值
- 調(diào)用時可省略使用默認值的參數(shù)
- 必須位于非默認參數(shù)之后
def foo(name="Dog", age=12):
"""
關鍵字參數(shù),根據(jù)指定的關鍵字傳遞參數(shù),與參數(shù)的位置不相關
:return:
"""
print(f"第一個參數(shù):{name},第二個參數(shù){age}")
# test code
foo()
foo(name="Alice", age=18)第一個參數(shù):Dog,第二個參數(shù)12 第一個參數(shù):Alice,第二個參數(shù)18
可變參數(shù)(Variable-length Arguments)
- *args:接收任意數(shù)量的位置參數(shù),接收后會被放進一個元組內(nèi),也稱為非關鍵字參數(shù)元組
- **kwargs:接收任意數(shù)量的關鍵字參數(shù),接收后會放進一個字典內(nèi),也稱為關鍵字參數(shù)字典,參數(shù)名為key,參數(shù)值為value。
def foo(*args, **kwargs):
for arg in args:
print(f"其他非關鍵參數(shù)有:{arg}")
for kwarg in kwargs.keys():
print(f"其他關鍵子參數(shù)有:{kwargs[kwarg]}")多種參數(shù)(包括位置參數(shù),默認參數(shù),關鍵字參數(shù),可變參數(shù))
多種參數(shù)一起傳遞,對傳遞順序是有要求的,一般是位置參數(shù)、關鍵字參數(shù)、默認參數(shù)、可變參數(shù)??傮w來說可變參數(shù)都是放在所有參數(shù)后面的。
def foo(arg1, arg2, arg3="some", *args, **kwargs):
print(f"位置參數(shù)arg1 is {arg1}\n位置參數(shù)arg2 is {arg2}")
print(f"默認參數(shù)arg3 is {arg3}")
for arg in args:
print(f"其他非關鍵參數(shù)有:{arg}")
for kwarg in kwargs.keys():
print(f"其他關鍵子參數(shù)有:{kwargs[kwarg]}")
# test code
# foo("Alice", 18)
# foo("Alice", 18, "Bob", "Elson", 19)
# foo("Alice", 18, "Bob", "Elson", 19, a="123", b=789)
foo("Alice", 18, "Elson",19, a="123", b=789,)位置參數(shù)arg1 is Alice 位置參數(shù)arg2 is 18 默認參數(shù)arg3 is Elson 其他非關鍵參數(shù)有:19 其他關鍵子參數(shù)有:123 其他關鍵子參數(shù)有:789
僅關鍵字參數(shù)(Keyword-only Arguments)
- 放在*后的參數(shù)必須使用關鍵字傳遞
def concat(*args, sep=" "):
return sep.join(args)
print(concat("a", "b", "c", sep="-")) # 必須使用關鍵字傳遞sepPython參數(shù)傳遞方法
Python中的參數(shù)傳遞本質(zhì)上是對象引用的傳遞。對于可變和不可變對象有不同的表現(xiàn):
不可變對象傳遞
- 數(shù)字、字符串、元組等不可變類型
- 函數(shù)內(nèi)修改會創(chuàng)建新對象,不影響原始變量
def modify_num(x):
x = x + 1
print("Inside:", x)
num = 10
modify_num(num) # Inside: 11
print("Outside:", num) # Outside: 10可變對象傳遞
- 列表、字典等可變類型
- 函數(shù)內(nèi)修改會影響原始對象
def modify_list(lst):
lst.append(4)
print("Inside:", lst)
my_list = [1, 2, 3]
modify_list(my_list) # Inside: [1, 2, 3, 4]
print("Outside:", my_list) # Outside: [1, 2, 3, 4]理解Python的參數(shù)傳遞機制對于編寫正確的函數(shù)至關重要。根據(jù)需求選擇合適的參數(shù)類型和傳遞方式,可以使代碼更清晰、更安全。
到此這篇關于Python函數(shù)參數(shù)類型以及傳參方式的文章就介紹到這了,更多相關python函數(shù)參數(shù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python的Web服務器網(wǎng)關接口(WSGI 和 ASGI)
WSGI和ASGI是Python Web開發(fā)中用于Web服務器和應用程序之間通信的兩個標準接口,選擇哪種接口取決于應用程序的具體需求和性能要求,下面就來介紹一下如何實現(xiàn)2026-02-02
在PyCharm中使用Git和Gitee進行版本控制的操作流程
該文章詳細介紹了在PyCharm中使用Git與Gitee進行版本控制的全過程,包括環(huán)境準備、基本操作、分支管理、拉取與克隆、以及避免沖突的IDE操作等步驟,設置Git路徑和Gitee插件是基礎,之后可以進行項目初始化、添加、推送等,需要的朋友可以參考下2026-05-05
Python匿名函數(shù)/排序函數(shù)/過濾函數(shù)/映射函數(shù)/遞歸/二分法
這篇文章主要介紹了Python匿名函數(shù)/排序函數(shù)/過濾函數(shù)/映射函數(shù)/遞歸/二分法 ,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06
Python實現(xiàn)將HTML轉(zhuǎn)為PDF/圖片/XML/XPS格式
網(wǎng)頁內(nèi)容是信息傳播的主要形式之一,這篇文章主要和大家介紹了如何使用Python實現(xiàn)將HTML分別轉(zhuǎn)為PDF/圖片/XML/XPS格式等,需要的可以參考下2024-03-03

