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: