函數參數的使用方法和注意事項。
參數的基本概念
函數中的參數指的是函數調用時傳遞給函數的值。函數定義時可以指定參數,也可以不指定參數。如果函數定義時沒有指定參數,則函數調用時也不需要傳遞參數。
位置參數指的是按照函數定義時參數的順序傳遞參數。下面的函數定義了兩個位置參數x和y
def add(x, y) x + y
調用該函數時,需要按照x、y的順序傳遞參數
result = add(3, 4)
關鍵字參數
關鍵字參數指的是按照參數名傳遞參數。下面的函數定義了兩個關鍵字參數x和y
def add(x=0, y=0) x + y
調用該函數時,可以指定參數名
result = add(x=3, y=4)
也可以省略參數名,但需要按照參數定義的順序傳遞參數
result = add(3, 4)
默認參數指的是在函數定義時指定參數的默認值,調用函數時可以不傳遞該參數。下面的函數定義了一個默認參數x=0
def add(x=0, y) x + y
調用該函數時,可以不傳遞參數x
result = add(y=4)
也可以傳遞參數x
result = add(x=3, y=4)
可變參數指的是在函數定義時不確定參數的個數,可以傳遞任意個參數。下面的函數定義了一個可變參數args
def add(args)
result = 0 args
result += arg result
調用該函數時,可以傳遞任意個參數
result = add(1, 2, 3, 4)
關鍵字可變參數
關鍵字可變參數指的是在函數定義時不確定參數的個數和參數名,可以傳遞任意個關鍵字參數。下面的函數定義了一個關鍵字可變參數kwargs
def add(kwargs)
result = 0 kwargs
result += kwargs[key] result
調用該函數時,可以傳遞任意個關鍵字參數
result = add(x=1, y=2, z=3)
- 參數的順序位置參數必須在關鍵字參數前面,例如下面的函數定義是錯誤的
def add(x=0, y) x + y
- 默認參數的值默認參數的值在函數定義時確定,如果默認參數的值是可變類型(例如列表、字典等),則每次調用函數時都會使用同一個默認參數的值,可能會出現意想不到的結果。
def test(a, b=[])d(a) b
t(test(1)) 輸出t(test(2)) 輸出[1, 2]
- 可變參數和關鍵字可變參數的使用可變參數和關鍵字可變參數只能定義一個,且必須放在參數列表的。