好!!為啥會談論到這個東西?!因為python跟一般所學的C/C++很不一樣
一般來說 在呼叫函式的時候 是以 argument = parameter 的方式傳入
(引數) (參數)
而python在引數(arguments)這一塊有所謂的匹配模式(match pattern)概念在。
Q: 至於Python有那些的匹配模式呢!?
ANS:
一般來說可以分成兩種狀況:
以”位置”的方式來匹配
----由左到右的方式進行匹配
以”關鍵字”的方式來匹配
---- 以引數的名稱來進行匹配
而引數在設定有兩種額外的方法:
1. 引數預設值
在python的函式中可以指定引數的預設值。(以name=value的型式)
ex: func( x=3, y=2, z=1)
2. 變動引數(varargs)
-- python中,在函式宣告時可以利用萬用字元(*)來收集任意數量的額外引數(此概念是源自於C語言的varargs) ;
-- 而函式在呼叫時,可以用萬用字元(*)將引數集合體給分解成個別的引數,表示欲傳遞任意多個引數。
[Function定義語法格式]
def function_name(param1=arg1, param2=arg2, ....):
"""
Here is function body !!!
"""
[引數的匹配方式]
呼叫
語法 位置 說明
func(value) 呼叫者 普通引數: 以"位置"來匹配。
func(name=value) 呼叫者 關鍵字引數:以"名稱"來匹配。
func(*name) 呼叫者 把name之中所有物件傳遞進來,當作個別的位置引數。
func(**name) 呼叫者 把name之中的所有key/value pairs傳遞進來,當成個別關鍵字引數。
*/**在呼叫時,是解開任意數量之引數
定義
def func(name) 函式 普通引數: 以"位置"或"名稱"的方式去匹配
def func(name=value) 函式 預設引數值(如果在沒呼叫時傳遞)
def func(*name) 函式 先匹配再收集剩餘的"位置引數"在tuple中
def func(**name) 函式 先匹配再收集剩餘的"關鍵字引數"在dict(辭典)中
*/**在定義時,是建立任意數量之引數
Reference:
http://www.loliman3000.com/tech/2fe2eea4a80e94fd3811629.php
沒有留言:
張貼留言