parameter 與 argument
這是常常會混用,但實際上不一樣意義的兩個詞,根據〈What is the difference between arguments and parameters?〉這一篇的說明,其實很簡單: parameter:一般譯為『參數』,指的是定義函式時列出來要傳入給函式參考使用的項目,等於是函式的規格,當你叫用這個函式時,就必須依照參數的個數以及個別參數的型別,傳入適當的資料給函式。 argument:一般譯為『引數』,指的是叫用函式時,傳入給函式引用的實際資料。 舉例來說: def foo(age:int, name:str): ... foo(10, 'hello') 其中 age 與 name 就是在定義函式時列出的參數,表示叫用 foo 時必須依序傳入一個整數與一個字串。10 和 'hello' 則是叫用 foo 時傳入的引數,10 會傳給 age、'hello' 會傳給 name。 由於引數是指實際傳送的資料,所以如果以底下方式叫用 foo: foo(10, id='hello') 那麼 10 也稱為位置引數(postitional argument),因為它是透過出現位置的順序對應到參數 age,而 'hello' 是一個指名引數(keyword argument),是透過指定參數的名稱對應到參數 name。如果稱它們為位置參數或是指名參數就不正確了,因為參數本來就有固定的位置和名稱,是實際傳遞的引數才需要靠位置或是名稱來辨別要傳給哪個參數。 更混淆的是,在 Python 中,keyword paramters 指的是在函式中接收所有為配對的指名引數的那個參數,例如: def foo(*args, **kwargs): ... foo(10, 20, name='hello') 函式定義中的 kwargs 就是 keyword parameters(具名參數),要加 's',因為可能有很多個,用來蒐集所有未能以名稱對應到參數的指名引數,變成一個字典;前面的 args 則稱為 optional paramters(選用參數),一樣因為可能有很多個,所以要加 s,用來蒐集所有未能以位置對應到參數的位置引數,變成一個序組(tuple)。因此,如果沒有區分 keyword argument 和 keyword parameters,就只能依靠前後文判斷是指哪一種了。 有些教科書並不刻意使用 parameter 與 argument,而是稱為形式參數(formal parameter)與實際參數(atual parameter),明確表達前者是定義函式時形式上規範要有哪些參數,後者則是實際上傳入的資料。兩者都稱為 paramter,就不用思考 paramter 和 argument 的差別了。 在中文世界中,一般教學通常不會嚴格區分,大部分都統稱『參數』,在閱讀時就必須自行依照前後脈絡判斷文字,確認倒底指的是函式內的參數,還是傳給函式的引數了。

這是常常會混用,但實際上不一樣意義的兩個詞,根據〈What is the difference between arguments and parameters?〉這一篇的說明,其實很簡單:
- parameter:一般譯為『參數』,指的是定義函式時列出來要傳入給函式參考使用的項目,等於是函式的規格,當你叫用這個函式時,就必須依照參數的個數以及個別參數的型別,傳入適當的資料給函式。
- argument:一般譯為『引數』,指的是叫用函式時,傳入給函式引用的實際資料。
舉例來說:
def foo(age:int, name:str):
...
foo(10, 'hello')
其中 age
與 name
就是在定義函式時列出的參數,表示叫用 foo
時必須依序傳入一個整數與一個字串。10 和 'hello' 則是叫用 foo
時傳入的引數,10 會傳給 age
、'hello' 會傳給 name
。
由於引數是指實際傳送的資料,所以如果以底下方式叫用 foo
:
foo(10, id='hello')
那麼 10 也稱為位置引數(postitional argument),因為它是透過出現位置的順序對應到參數 age,而 'hello' 是一個指名引數(keyword argument),是透過指定參數的名稱對應到參數 name。如果稱它們為位置參數或是指名參數就不正確了,因為參數本來就有固定的位置和名稱,是實際傳遞的引數才需要靠位置或是名稱來辨別要傳給哪個參數。
更混淆的是,在 Python 中,keyword paramters 指的是在函式中接收所有為配對的指名引數的那個參數,例如:
def foo(*args, **kwargs):
...
foo(10, 20, name='hello')
函式定義中的 kwargs
就是 keyword parameters(具名參數),要加 's',因為可能有很多個,用來蒐集所有未能以名稱對應到參數的指名引數,變成一個字典;前面的 args
則稱為 optional paramters(選用參數),一樣因為可能有很多個,所以要加 s,用來蒐集所有未能以位置對應到參數的位置引數,變成一個序組(tuple)。因此,如果沒有區分 keyword argument 和 keyword parameters,就只能依靠前後文判斷是指哪一種了。
有些教科書並不刻意使用 parameter 與 argument,而是稱為形式參數(formal parameter)與實際參數(atual parameter),明確表達前者是定義函式時形式上規範要有哪些參數,後者則是實際上傳入的資料。兩者都稱為 paramter,就不用思考 paramter 和 argument 的差別了。
在中文世界中,一般教學通常不會嚴格區分,大部分都統稱『參數』,在閱讀時就必須自行依照前後脈絡判斷文字,確認倒底指的是函式內的參數,還是傳給函式的引數了。