Python 函式的引數與關鍵字
- 函式基本用法
- 引數與關鍵字
Python 函式的引數與關鍵字
函式基本用法
一般的 Python 函式如下:
def AFunction(x, y, z): print(x, y, z) a = 10 b = 20 c = 30 AFunction(a, b, c) #10 20 30
函式接收名稱(name),以在函式中利用之。
另一種指定 name 的用法如下:
def AFunction(x=0, y=0, z=0): print(x, y, z) a = 10 b = 20 AFunction(a, z=b) #10 0 20
規則:
- 指定預設數值的項目必須置於尾端。
- 未指定的項目會依順序代入。
若是接收數目與輸入不同,會 Raise 出 TypeError。
引數與關鍵字
Python 提供了使用 tuple、list、dict 來輸入函式,樣式和使用上與 C 語言類似,不過並不是代表指標(Pointer)的意思。
有序排列的 tuple 和 list 使用星號 * 代表,稱為「引數(Arguments, args)」,會依序輸入或接收進函式。
純輸入:接收端數量不對等會回傳錯誤。
def AFunction(x, y, z): print(x, y, z) aList = [10, 20, 30] AFunction(*aList) #10 20 30
純接收:型態為 tuple。
def AFunction(*aList): print(aList) AFunction(10, 20, 30) #(10, 20, 30)
輸入 + 接收:數量必須調整與對應適當。
def AFunction(a, b, c, *aList): print(aList) #前三項不會顯示 AFunction(10, 20, *[30, 40, 50, 60]) #(40, 50, 60)
使用索引的 dict 使用雙星號 ** 代表,稱為「關鍵字(Keywords, kwargs)」,會依名稱填入函式。名稱的部份規定必須使用 string 表示。
純輸入:接收端名稱不同、未指定預設值的項目沒輸入,皆會回傳錯誤。
def AFunction(x, y, z): print(x) aList = {'x':10, 'y':20, 'z':30} AFunction(**aList) #10
純接收:型態為 dict。注意輸入端都需要給名稱。
def AFunction(**aList): print(aList) AFunction(c=10, a=20, b=30) #{'a': 20, 'c': 10, 'b': 30}
輸入 + 接收:名稱必須調整與對應適當。
def AFunction(missed, **aList): print(aList) #不會列出 missed AFunction(a=10, b=20, **{'c':30, 'missed':40, 'd':50}) #{'a': 10, 'c': 30, 'b': 20, 'd': 50}
引數與關鍵字是可以混合用的,不過兩者必須擺在接收端和輸入端的最後項。
此時函式會照位置依序對應,再照引數依序對應,有名稱的項目最後才根據關鍵字對應。
def AFunction(x, y, *aList, **bList): print(aList) print(bList) AFunction(0, u=10, y=20, *[30, 40], **{'z':50, 'w':60}) #TypeError: AFunction() got multiple values for argument 'y'
以上錯誤就是因為第一個 0 和 [30, 40] 的 list 已經帶入 x 和 y,並且多出一個 40,而之後又追加一個 y 的名稱所致。
善用這個功能,可以創造多變的輸入函式,應用到迴圈處理(如新增許多不同欄數的表格內容),不用再個別撰寫類似的函式流程。
Comments
comments powered by Disqus