3. 有預設值的參數
(1) 「未傳值」給已有預設值的參數
如果在函式的參數部分寫成「某參數=某值」,表示當參數未接收到呼叫指令傳來的引數值時,就以預設值作為參數值。
以下是一個例子:
在第1行的函式共有4個參數,參數的順序有規定的寫法:沒有預設值的參數(如chi、eng)應該寫在前面,有預設值的參數(如wchi、weng)應該寫在後面。
呼叫函式:
在第1行只傳2個引數,表示第3及第4個參數將使用其預設值。
執行結果:
72.5分 72.0分
說明:
(2) 「傳值」給已有預設值的參數
如果傳值給已設定預設值的參數,傳來的引數值會取代原有的預設值。
呼叫函式:
以上4種寫法都讓函式的參數得到相同的引數值,但建議用第1行(更改2個預設值)或第2行(更改1個預設值)的寫法。原則是沒有預設值的參數依順序寫引數值,有預設值的參數則寫成參數名稱=引數值。
執行結果:
70.0分 70.0分 70.0分 70.0分
說明:
問題1:
撰寫一個函式,distance(sourceX, sourceY, destX=0, destY=0),用來回傳在平面座標上(sourceX, sourceY)到(destX, destY)的「直線距離」。如果只傳2個引數,將回傳(sourceX, sourceY)到原點的直線距離。
測試範例(小數取2位):
distance(3, 4) -> 5.00 distance(3, 4, destX=-1, destY=-3) -> 8.06
問題2:
撰寫一個函式,manhattan(sourceX, sourceY, destX=0, destY=0),用來回傳在平面座標(sourceX, sourceY)到(destX, destY)的「曼哈頓距離」。如果只傳2個引數,將回傳(sourceX, sourceY)到原點的曼哈頓距離。
測試範例(小數取2位):
distance(3, 4) -> 7.00 distance(3, 4, destX=-1, destY=-3) -> 11.00