定義無參函數(shù)
def foo():
??? print()
函數(shù)的執(zhí)行就是一堆簡單的函數(shù)栈妆,無需復(fù)雜的步驟變換
有參函數(shù)
def foo(x,y):
????? res=x+y
????? return res
調(diào)用時要傳入相應(yīng)的參數(shù),得到return的值的方法是新建對象教翩。如
?z=foo(5,6)
函數(shù)調(diào)用的語句形式(無參),函數(shù)調(diào)用的表達(dá)式形式(有參)
def maax(x,y):
res=x if x>y else y???????????? 三元表達(dá)式 符合的返回左邊夕土,不符的返回右邊
return res
s=maax(89,78)
s
Out[36]: 89
s=maax(maax(78,110),108)
s
Out[38]: 110
形參實參
在定義階段設(shè)置的函數(shù)為形式參數(shù)?? 即變量名
在調(diào)用階段弄的參數(shù)為實際參數(shù)?????? 即變量值
如果實參為可變類型的話埠戳,會影響函數(shù)的第二次調(diào)用的正確性井誉,除非特意設(shè)置,一般情況下不要用可變類型做實參乞而,用不可變類型比較好
實參:按位置傳參送悔,按關(guān)鍵字傳值
位置參數(shù)必須傳值,
默認(rèn)參數(shù)?
定義階段就已經(jīng)有值了使用階段可以不傳爪模,默認(rèn)參數(shù)必須放到位置參數(shù)的后面欠啤,否則報錯
可變參數(shù)??? def foo(x,*args)?? * 代表所有,將所有其他的參數(shù)保存為元組存貯??? 多個arg
def foo(x,*args,**kwargs):**代表按關(guān)鍵字傳值??? 多個關(guān)鍵字參數(shù)??? 成字典
?
一定要注意不能重復(fù)傳值屋灌,要注意各個參數(shù)的位置關(guān)系洁段。