Python函數參數匹配模型通用規(guī)則keyword-only參數詳解
Python3對函數參數的排序規(guī)則更加通用化了,即Python3 keyword-only參數,該參數即為必須只按照關鍵字傳遞而不會有一個位置參數來填充的參數。該規(guī)則在處理人一多個參數是很有用的。
keyword-only
kword_only(1, 2, 3, c=4)
print('-' * 20)
kword_only(a=1, c=3)
示例結果:
1 (2, 3) 4
--------------------
1 () 3
在 *args 之后的參數都需要在調用中使用關鍵字的方式傳遞,否則會拋出異常。
def kword_only(a, *b, c): print(a, b, c) kword_only(1, 2, 3)
異常結果:
kword_only(1, 2, 3)
TypeError: kword_only() missing 1 required keyword-only argument: 'c'
我們也可以在參數列表中使用一個 * 字符,表示函數不會接受變量長度的參數列表,而是要求 * 后面的參數都需要使用關鍵字參數的方式傳遞。
def kword_only(a, *, b, c):
print(a, b, c)
kword_only(1, b=2, c=3)
print('-'*20)
kword_only(b=2, c=3, a=1)
示例結果:
1 2 3
--------------------
1 2 3
我們可以看到 a 可以利用位置參數進行傳遞,但是 b 、 c 必須通過關鍵字參數傳遞,否則就會拋出異常。
def kword_only(a, *, b, c): print(a, b, c) kword_only(1, 2, 3)
異常結果:
kword_only(1, 2, 3)
TypeError: kword_only() takes 1 positional argument but 3 were given
當然我們,可以通過對keyword-only參數使用默認值,這樣例中的 a 仍可以通過位置參數或者關鍵字參數傳遞,而 b 、 c 就是可選的了,當然如果需要傳遞的話仍然是要利用關鍵字參數進行傳遞的。
def kword_only(a, *, b=2, c=3):
print(a, b, c)
kword_only(1)
print('-'*20)
kword_only(a=1)
print('-'*20)
kword_only(b=22, c=33, a=11)
示例結果:
1 2 3
--------------------
1 2 3
--------------------
11 22 33
總結
以上所述是小編給大家介紹的Python函數參數匹配模型通用規(guī)則keyword-only參數詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
解決python matplotlib imshow無法顯示的問題
今天小編就為大家分享一篇解決python matplotlib imshow無法顯示的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
TensorFlow 實戰(zhàn)之實現(xiàn)卷積神經網絡的實例講解
下面小編就為大家分享一篇TensorFlow 實戰(zhàn)之實現(xiàn)卷積神經網絡的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02
Python辦公自動化之發(fā)送電子郵件和Outlook集成
Python辦公?動化是利?Python編程語?來創(chuàng)建腳本和程序,以簡化、加速和?動化?常辦公任務和?作流程的過程,本文主要介紹一下如何利用Python實現(xiàn)發(fā)送電子郵件和Outlook集成,需要的可以參考下2023-12-12

