Parameter / Argument 傻傻分不清

定義函式的時候,函式要吃的是 argument;使用函式的時候,傳給函式吃的是 parameter:

def fib(n):
 pass
 
fib(20)

上例中 n 是argument、20 是 parameter。

喜歡定義東定義西的 computer scientists 又有這樣的定義:

  • argument = formal parameter
  • parameter = actual parameter

不過這兩者其實不需要深究差別,皆以 parameter 稱之即可。就跟大水庫理論一樣,反正總之是讓騜脫罪的理論,定義與理論內涵不是重點。

Default Argument Values

如果 default 值是 mutable 的,則每次呼叫都會累計;如果是 immutable 的則函數跑完會回歸 default:

預設引數值

來源:〈預設引數值

Keyword Arguments

*parameter1 會包成 tuple,**parameter2 會包成 dict,當然要給 key 和 value,兩個都要用時 *parameter1 要放在 **parameter2 前面:

關鍵字引數

來源:〈關鍵字引數

在函式內的參數中加星號可以把參數包成 tuple 或 dict,反之亦然,在函式中對 tuple 或 dict 物件加星號可以解開成 postional parameter 或 keyword parameter:

拆解引數列表

來源:〈拆解引數列表

參考資料