Python函數(shù)參數(shù)匹配模型(下)

180.jpg

任意參數(shù) *

當我們的函數(shù)接收參數(shù)為任意個,或者不能確定參數(shù)個數(shù)時,我們,可以利用*來定義任意數(shù)目的參數(shù),這個函數(shù)調(diào)用時,其所有不匹配的位置參數(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)

示例結(jié)果:

(1,)
--------------------
1
====================
(1, 2, 3, 4, 5)
--------------------
1
2
3
4
5

任意參數(shù) **

**是用于收集關(guān)鍵字參數(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)

示例結(jié)果:

{'a': 1}
a: 1
====================
{'a': 1, 'b': 2, 'c': 3}
a: 1
b: 2
c: 3

任意參數(shù)混合

我們可以混合一般參數(shù)、*參數(shù)以及**參數(shù)完成實現(xiàn)更加復(fù)雜的調(diào)用方式。

def f(a, *targs, **dargs):
    print(a, targs, dargs)


f(1,2,3, x=1, y=2)

示例結(jié)果:

1 (2, 3) {'x': 1, 'y': 2}

可以看到這種調(diào)用方式并不那么直觀,甚至有些“混淆視聽”,那么怎么在復(fù)雜任意參數(shù)的調(diào)用時,是的在函數(shù)調(diào)用更加直觀明了?

解包參數(shù)

我們可以在函數(shù)調(diào)用時,直接利用*進行參數(shù)傳遞,然后讓函數(shù)自動解包,也就類似之前的序列解包,使用調(diào)用時更加的直觀。

def f(a, b, c, d):
    print(a, b, c, d)


f(1, *(2, 3), **{'d': 4})

示例結(jié)果:

1 2 3 4
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容