python中函式傳遞引數有三種方式

python中函式傳遞引數有三種方式

python中函式傳遞引數三種方式。第1 種方式是最“傳統”的方式:一個函式可以定義不限個數引數,引數(形式引數)放在跟在函式名後面的小括號中,各個引數之間以逗號隔開。

用這種方式定義的函式在呼叫的時候也必須在函式名後的小括號中提供相等個數的值(實際引數),不能多也不能少,而且順序還必須相同。

也就是說形參和實參的個數必須一致,而且想給形參1的值必須是實參中的第一位,形參與實參之間是一一對應的關係,即“形參1=實參1 形參2=實參2...”。

很明顯這是一種非常不靈活的形式。比如:"def addOn(x,y): return x + y",這裡定義的函式addOn,可以用addOn(1,2)的形式呼叫,意味著形參x將取值1,主將取值2。

addOn(1,2,3)和addOn (1)都是錯誤的形式。

第2種方式比第1種方式好一點,在定義的時候已經給各個形參定義了預設值。

因此,在呼叫這種函式時,如果沒有給對應的形式引數傳遞實參,那麼這個形參就將使用預設值。

比如:“def addOn(x=3,y=5): return x + y”,那麼addOn(6,5)的呼叫形式表示形參x取值6,y取值5。

此外,addOn(7)這個形式也是可以的,表示形參x取值7,y取預設值5。這時候會出現一個問題,如果想讓x取預設值,用實參給y賦值怎麼辦

前面兩種呼叫形式明顯就不行了,這時就要用到Python中函式呼叫方法的另一大絕招 ──關健字賦值法。

可以用addOn(y=6),這時表示x取預設值3,而y取值6。這種方式通過指定形式引數可以實現可以對形式引數進行“精確攻擊”,一個副帶的功能是可以不必遵守形式引數的前後順序,比如:addOn(y=4,x=6),這也是可以的。

這種通過形式引數進行定點賦值的方式對於用第1種方式定義的函式也是適用的。