程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python 函數的參數類型

編輯:Python

Python 函數的參數類型

  • 1. 位置參數
  • 2. 默認值參數
  • 3. 關鍵參數
  • 4. 可變長度參數
    • 4.1) *parameter
    • 4.2) **parameter

Python 在定義函數時不需要指定形參的類型,完全由調用者傳遞的實參類型以及 Python 解釋器的理解和推斷來決定。
接下來,本文將介紹以下四個函數的參數類型:

  • 位置參數、默認值參數、關鍵參數與可變長度參數。

1. 位置參數

位置參數:調用函數時實參和形參的順序必須嚴格一致,並且實參和形參的數量必須相同

即下面的格式:

def showArgs(a, b, c):
print(a, b, c)
show(1, 2, 3) # 1 2 3
show(1, 2) # TypeError: showArgs() missing 1 required positional argument: 'c'
show(1, 2, 3, 4) # TypeError: showArgs() takes from 1 to 3 positional arguments but 4 were given

2. 默認值參數

默認值參數:在調用有默認值參數的時,可以不對有默認值的參數賦值(如果有,則會使用傳遞的值),即與上面的位置參數不同的是,可以缺少參數傳遞,不過也不能多傳。

它的使用方法:即,在定義函數時def demo(a=1, b=2) 填寫參數的時候給一個默認值。

舉個例子看看:

def showArgs(a, b=3, c=2):
print(a, b, c)
showArgs(1, 2, 3) # 1 2 3
showArgs(1, 2) # 1 2 2
showArgs(1, 2, 3, 4) # TypeError: showArgs() takes from 1 to 3 positional arguments but 4 were given

注意事項:

  • 默認值參數必須出現在函數參數列表的最右端任何一個默認值參數右邊不能有非默認值參數
  • 默認值參數的賦值只會在函數定義時被解釋一次
    (所以默認值參數最好為不可變類型)

3. 關鍵參數

使用,關鍵參數,實參順序和形參順序可以不一樣,不過如果參數沒有默認值,參數數量也要一致。

它的使用方法:在調用函數時demo(a=1, b=2) 來指定參數的值。

舉個例子看看:

def showArgs(a, b, c):
print(a, b, c)
showArgs(1, 2, c=3) # 1 2 3
showArgs(a=1, c=22, b=33) # 1 33 22

注意事項:

  • 關鍵參數後面不能跟隨位置參數

錯誤情況:

showArgs(1, 22, b=33)

它會報這個錯誤:TypeError: showArgs() got multiple values for argument 'b',因為雖然 b 使用了關鍵參數,但是前面兩個為位置參數,通過位置參數,b 已經被賦值過了

showArgs(a=11, c=222, 333)

它會報這個錯誤:SyntaxError: positional argument follows keyword argument,關鍵參數後面不能跟有位置參數


4. 可變長度參數

可變長度參數:即參數長度不固定
它有著以下兩種形式:

  • *parameter: 接收多個位置實參並將其放在元組
  • **parameter: 接收多個關鍵參數並將其放在字典

其中的 parameter 可以自定義為自己想要的名字

4.1) *parameter

必須接收的是位置參數!!!
它的使用方法如下:

def showArgs(*args):
print(args)
showArgs(1, 2, 3) # (1, 2, 3)
showArgs(7, 8) # (7, 8)

4.2) **parameter

必須接收的是關鍵參數!!!
它的使用方法如下:

def showArgs(**args):
print(args)
showArgs(a=1, b=2, c=3) # {'a': 1, 'b': 2, 'c': 3}
showArgs(a=7, b=8) # {'a': 7, 'b': 8}


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved