1. 程式人生 > >python第十四課--排序及自定義函數

python第十四課--排序及自定義函數

變參 兩種 參數 否則 存在 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第十四課--排序及自定義函數