1. 程式人生 > 程式設計 >Python函式引數型別及排序原理總結

Python函式引數型別及排序原理總結

這篇文章主要介紹了Python函式引數型別及排序原理總結,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Python中函式的引數問題有點複雜,主要是因為引數型別問題導致的情況比較多,下面來分析一下。

引數型別:預設引數,關鍵字引數,不定長位置引數,不定長關鍵字引數。

其實總共可以分為 位置引數和關鍵字引數,因為位置引數被放在list裡面,關鍵字引數放在dict裡面,Python在解讀的時候首先處理list,沒有遇到關鍵字就append到list裡面,遇到關鍵字了,就開始做dict直到結束,所以,位置引數必須放在關鍵字引數前面。

這裡總結出三個模型:

1:不存在預設函式時:

 def test(a,*args,c,d=3,**kwargs):
   print(a)
   print(args)
   print(c)
   print(d)
   print(kwargs)
 
 test(1,2,3,4,c=1,d=4,e=11,f=22)

執行結果:

1
(2,4)
1
4
{'e': 11,'f': 22}

2:存在預設引數,引數取預設值,(預設引數放在*args後面)

def test(a,b=1,**kwargs):
  print(a)
  print(args)
  print(b)
  print(c)
  print(d)
  print(kwargs)

test(1,f=22,h=66)

執行結果:

(2,4)
1
{'e': 11,'f': 22,'h': 66}

3:存在預設引數,引數不取預設值,(預設引數放在*args前面)

def test(a,**kwargs):
  print(a)
  print(b)
  print(args)
  print(c)
  print(d)
  print(kwargs)

test(1,h=66)

執行結果:

1
2
(3,4)
1
4
{'f': 22,'e': 11,'h': 66}

總結:

從上面也看出來了,其實基本順序就是  位置引數--->關鍵字引數,然後就是預設引數在 *args前後的問題了。

還有一點,前面已經說過,關鍵字引數被儲存為字典型別,也就是無序的,但是 **kwargs 需要放在最後!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。