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