python第十四課--排序及自定義函數
阿新 • • 發佈:2019-02-24
變參 兩種 參數 否則 存在 turn 調用 維護 兩層
1.排序
特點:
1).升序:從小到大
2).降序:從大到小
課堂實現選擇排序:參看老郭選擇排序.py文件
2.函數:(方法/method)
自定義函數:
概念:它表示一段作用範圍(作用域),當中封裝了一段業務邏輯代碼,此範圍有名字,
我們需要調用函數名,才能去執行它;
好處:
1).代碼的復用性變強
2).代碼的擴展性和維護性變好
3).代碼的閱讀性變好
函數有五要素:
①.函數修飾符:必須都是def開頭
②.函數返回值:函數執行完畢可能存在有返回值/沒有返回值兩種情況
③.函數名:標識符(規則和規範),自己定義函數的名字
④.形參列表定義在函數名後的小括號內,可以沒有也可以定義多個
⑤.函數體封裝的功能代碼
格式:
① ③(④):
⑤
②
函數的內存執行過程:
棧:
特點:分為棧頂部分和棧底部分,滿足先進後出,只運行棧頂的內容;
函數method一旦被執行了,先進棧(入棧) --> 在棧頂開辟空間執行,
如果執行到一半調用了別的函數method02,那麽method就被壓棧了(頂->底),
method02在開辟空間執行,等到method02執行完畢了,它就被彈棧(出棧)了,
然後method01獲取了執行權,它會先升棧(底->頂),到method執行完畢了,它就被彈棧(出棧)了
【註意事項】:
1).形式參數也稱形參,實際參數也稱實參
2).形式參數出現在定義函數的時候,沒有具體的內容,只是開了個口
3).實際參數出現在函數調用的時候,將實際參數給到形式參數 --> 稱為參數傳遞,
之後參與運算的全部都是實參而已
4).return關鍵字有兩層含義:
①.表示函數的結束②.將結果返回給函數的調用者/調用處
5).python中沒有函數重載的現象:
什麽是函數重載?
在同一個作用範圍內定義相同名字的函數,但是形參不同(個位、位置),
在調用函數的時候,通過傳入的參數的不同,能得知到底需要執行哪一個函數
python中如果在相同的作用域中定義多個重名的函數,
最後的一個函數,會將之前所有的同名函數全部覆蓋,
所以只能調用最後一個同名函數執行
6).與return同一作用範圍內的後面不要顯示的書寫任何代碼,因為永遠不可能被執行到,不會報錯
7).return後面也可以不定義任何有效的數據,但是這樣會將None值返回給調用處,一般沒有什麽意義
4中最常見的自定義函數模型
1).無參無返回值
2).無參有返回值
3).有參無返回值
4).有參有返回值
參數的定義和使用細節:
分類:
1).默認參數:
#在設計自定義函數的時候,就存在一個默認值,就算在調用的時候不顯示的傳入實參,也不會報錯
#會用默認值來代替參與後期的運算
def m1(name=‘zs‘,age=23): print(name,age) m1("李四") # m1(18)
2).一般參數:
#定義函數的時候有幾個參數,在調用函數的時候就需要顯示的傳遞幾個實參,
#而且要保證位置不能傳錯,否則會造成數據內容的不合理
def m2(name,age,sex): print(name,age,sex) m2("王五",30,"男")
3).關鍵字參數:
def m3(name,age,sex): print(name,age,sex) m3(age=25,name="錢八",sex="女")
4).#可變參數:(重要)
格式:
def 函數名(*args,**kwargs):
函數體
參數的講解:
*args:可以接受0~無窮多個單值,將它們存入到一個元祖中使用
**kwargs:接可以受0~無窮多個鍵值對,將它們存入到一個字典中使用
def m4(*args,**kwargs): print(args,type(args)) print(kwargs,type(kwargs)) # m4() m4(10,0,3.14,True,"abc",name="老郭",hobby="開車")
python第十四課--排序及自定義函數