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

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