python函数参数那些事,关键字参数与位置参数
在調用函數時傳給 function(或 method)的值。參數分為兩種:
關鍵字參數?:在函數調用中前面帶有標識符(例如?name=)或者作為包含在前面帶有?**?的字典里的值傳入。舉例來說,3?和?5?在以下對 complex()的調用中均屬于關鍵字參數:
complex(real=3, imag=5) complex(**{'real': 3, 'imag': 5})位置參數:不屬于關鍵字參數的參數。位置參數可出現于參數列表的開頭以及/或者作為前面帶有?*?的 iterable里的元素被傳入。舉例來說,3?和 5?在以下調用中均屬于位置參數:
complex(3, 5) complex(*(3, 5))規則:在函數調用中,關鍵字參數必須跟隨在位置參數的后面。傳遞的所有關鍵字參數必須與函數接受的其中一個參數匹配,它們的順序并不重要。這也包括非可選參數。不能對同一個參數多次賦值。
以下是一些正確和錯誤范例:
#函數定義 def test(arg1, arg2='hello', arg3='world', arg4='nice to meet you'):print(arg2, arg3, arg4)#正確范例 test(1000) # 1個位置參數 test(arg1=1000) # 1個關鍵字參數 test(arg1=1000, arg2='VOOOOOM') # 2個關鍵字參數 test(arg2='VOOOOOM', arg1=1000) # 2個關鍵字參數 test('a million', 'bereft of life', 'jump') # 3個位置參數 test('a thousand', arg2='pushing up the daisies') # 1個位置參數,1個關鍵字參數#錯誤范例 test() # 缺少一個參數 test(voltage=5.0, 'dead') # 非關鍵字參數在關鍵字參數后面 test(110, voltage=220) # 一個參數傳了多個值 test(arg5='John Cleese') # 對不存在的參數傳值為了確??勺x性和運行效率,我們可以對每個參數,使用限制允許的參數傳遞形式,這樣開發者只需查看函數定義即可確定參數項是僅按位置、按位置也按關鍵字,還是僅按關鍵字傳遞。
方法就是用/和*作為分隔符,把三種傳遞方法的參數分隔開來。
def function(arg1, arg2, /, arg3, arg4, *, arg5, arg6):pass如上的函數,arg1和arg2是僅限位置參數,arg3和arg4是位置或關鍵字參數都行,arg5和arg6則是僅限關鍵字參數。
最后則是官方對于函數參數給出的指導:
-
如果你希望形參名稱對用戶來說不可用,則使用僅限位置形參。 這適用于形參名稱沒有實際意義,以及當你希望強制規定調用時的參數順序,或是需要同時收受一些位置形參和任意關鍵字形參等情況。
-
當形參名稱有實際意義,以及顯式指定形參名稱可使函數定義更易理解,或者當你想要防止用戶過于依賴傳入參數的位置時,則使用僅限關鍵字形參。
-
對于 API 來說,使用僅限位置形參可以防止形參名稱在未來被修改時造成破壞性的 API 變動。
總結
以上是生活随笔為你收集整理的python函数参数那些事,关键字参数与位置参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这个电脑的双屏幕电脑使用双屏幕
- 下一篇: 支持4G通话的国产平板支持4G的平板