在Python中定義函數(shù),可以用必選參數(shù)(位置參數(shù)),默認(rèn)參數(shù),可變參數(shù),關(guān)鍵字參數(shù)和命名關(guān)鍵字參數(shù),這5種參數(shù)都可以組合使用。但參數(shù)定義的順序必須是:
必選參數(shù)
(位置參數(shù))
默認(rèn)參數(shù)
可變參數(shù)
命名關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)
例如:
定義:
def f1(x, y=0, *args, z, **kw):
print(x, y, args, z, kw)
調(diào)用:
f1(1, 2, 3, 4, 5, z=6, p=7, q=8)
輸出:
1 2 (3,4,5) 6, {'p': 7, 'q': 8}
定義:
def f2(x, y=0, *, z, **kw)
print(x, y, z, kw)
調(diào)用:
f2(1, 2, z=6, p=7, q=8)
輸出:
1 2 6 {'p': 7, 'q': 8}
小結(jié):
Python的函數(shù)具有非常靈活的參數(shù)形態(tài),既可以實(shí)現(xiàn)簡(jiǎn)單的調(diào)用,又可以傳入非常復(fù)雜的參數(shù)。
默認(rèn)參數(shù)
一定要用
不可變對(duì)象
,如果是可變對(duì)象,程序運(yùn)行時(shí)會(huì)有邏輯錯(cuò)誤!
要注意定義
可變參數(shù)
和
關(guān)鍵字參數(shù)
的語(yǔ)法:*args是可變參數(shù),args接收的是一個(gè)tuple;**kw是關(guān)鍵字參數(shù),kw接收的是一個(gè)dict。
以及調(diào)用函數(shù)時(shí)如何傳入
可變參數(shù)
和
關(guān)鍵字參數(shù)
的語(yǔ)法:
-
可變參數(shù)
既可以直接傳入:func(1, 2, 3),又可以先組裝list或tuple,再通過(guò)
*args傳入:func(*(1, 2, 3)); - 關(guān)鍵字參數(shù) 既可以直接傳入:func(a=1, b=2),又可以先組裝dict,再通過(guò)**kw傳入:func(**{‘a(chǎn)’: 1, ‘b’: 2})。
- 使用*args和**kw是Python的習(xí)慣寫(xiě)法,當(dāng)然也可以用其他參數(shù)名,但最好使用習(xí)慣用法。
- 命名關(guān)鍵字參數(shù) 是為了限制調(diào)用者傳入的參數(shù)名,同時(shí)可以提供默認(rèn)值。定義 命名關(guān)鍵字參數(shù) 在沒(méi)有 可變參數(shù) 的情況下不要忘了寫(xiě)分隔符*,否則定義的將是 位置參數(shù) 。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
