Python中函數(shù)參數(shù)匹配模型詳解
當我們的函數(shù)接收參數(shù)為任意個,或者不能確定參數(shù)個數(shù)時,我們,可以利用 * 來定義任意數(shù)目的參數(shù),這個函數(shù)調用時,其所有不匹配的位置參數(shù)會被賦值為元組,我們可以在函數(shù)利用循環(huán)或索引進行使用
def f(*args): # 直接打印元組參數(shù) print(args) print('-'*20) # 循環(huán)打印元組參數(shù) [print(i) for i in args] ... # 傳遞一個參數(shù) f(1) print('='*20) # 傳遞5個參數(shù) f(1, 2, 3, 4, 5)
示例結果:
(1,)
--------------------
1
====================
(1, 2, 3, 4, 5)
--------------------
1
2
3
4
5
###任意參數(shù) ** 而 ** 是用于收集關鍵字參數(shù)并將這些參數(shù)傳遞給一個新的字典,即在函數(shù)中我們可以利用處理字典的方式處理這些參數(shù) def f(**args): # 直接打印字典參數(shù) print(args) for key, value in args.items(): print('{}: {}'.format(key, value)) f(a=1) print('='*20) f(a=1, b=2, c=3)
示例結果:
{'a': 1}
a: 1
====================
{'a': 1, 'b': 2, 'c': 3}
a: 1
b: 2
c: 3
任意參數(shù)混合
我們可以混合一般參數(shù)、 * 參數(shù)以及 ** 參數(shù)完成實現(xiàn)更加復雜的調用方式。
def f(a, *targs, **dargs): print(a, targs, dargs) f(1,2,3, x=1, y=2)
示例結果:
1 (2, 3) {'x': 1, 'y': 2}
可以看到這種調用方式并不那么直觀,甚至有些“混淆視聽”,那么怎么在復雜任意參數(shù)的調用時,是的在函數(shù)調用更加直觀明了?
解包參數(shù)
我們可以在函數(shù)調用時,直接利用*和**進行參數(shù)傳遞,然后讓函數(shù)自動解包,也就類似之前的序列解包,使用調用時更加的直觀。
def f(a, b, c, d): print(a, b, c, d) f(1, *(2, 3), **{'d': 4})
示例結果:
1 2 3 4
總結
以上所述是小編給大家介紹的Python中函數(shù)參數(shù)匹配模型詳解,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!
相關文章
分析解決Python中sqlalchemy數(shù)據(jù)庫連接池QueuePool異常
這篇文章主要來給大家分析sqlalchemy數(shù)據(jù)庫連接池QueuePool的異常,給大家用詳細的圖文方式做出了解決的方案,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09使用selenium模擬動態(tài)登錄百度頁面的實現(xiàn)
本文主要介紹了使用selenium模擬動態(tài)登錄百度頁面,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-05-05淺析Python中getattr和getattribute的調用
在Python中,getattr和getattribute是兩個用于屬性訪問的重要函數(shù),它們可以在運行時動態(tài)地獲取對象的屬性或自定義屬性訪問行為,下面我們就來學習一下它們的具體用法吧2023-11-11