Python程序开发——第五章 函数
目錄
- 一、函數的定義
- (一)def關鍵字定義函數
- (二)形參和實參
- (三)全局變量和局部變量
- 二、函數的調用
- 三、函數的參數傳遞
- (一)必需參數
- (二)關鍵字參數
- (三)默認參數
- (四)不定長參數
- 1、元組形式導入(*)
- 2、字典形式導入(**)
- 四、匿名函數
- 五、遞歸函數
一、函數的定義
函數,也就是為了提高代碼復用性、降低代碼冗余的一種方式,將功能代碼定義為一個函數。
(一)def關鍵字定義函數
通過關鍵字def來定義函數,函數要有函數名和參數以及函數體等等。
def后跟函數名和圓括號(),括號內是參數(參數也可以為空,此時則稱該函數為無參函數),且函數內容以冒號:來表示這個函數的起始。
函數內的內容,也就是函數體,它是實現函數具體功能的代碼。
另外還有return語句,它用于將函數的處理結果返回給調用該函數一方或者退出函數,若函數沒有返回值,則不需要加上return語句,即相當于返回none。
(二)形參和實參
形參,即形式參數,可以說它是虛擬變量,而實參,即實際參數,即調用函數時傳入的參數。
形參的目的是接收實參,被調用時分配內存單元,實參賦值給形參, 調用結束后, 形參釋放所分配的內存單元 。注意實參是以按地址傳遞方式將值傳遞給形參,即實參的地址傳遞給形參,實際上實參是程序中使用的參數。
(三)全局變量和局部變量
簡單的來說,局部變量是在函數內定義的變量,只能在定義它的函數中使用;而全局變量,是定義在函數之外的變量,它可以在程序的任何位置使用。
在函數中只能訪問全局變量,但不能修改全局變量,若要在函數內部修改全局變量的值,則需在函數中通過global關鍵字聲明。
例如下列python代碼,在fein()函數中修改全局變量a,首先要對它該變量使用global關鍵字聲明:
運行結果如下:
二、函數的調用
通過函數名(參數或參數列表)來調用函數。
下列python代碼,input_number()函數是個無參函數,它通過input_number()來調用該函數,number_max()函數帶有三個參數,在調用number_max()時向該函數傳入了三個實參,該函數的功能是輸出傳入的參數:
運行結果如下:
三、函數的參數傳遞
根據實參傳遞給形參的方式,可分為必需參數、關鍵字參數、默認參數和不定長參數。
(一)必需參數
必需參數,即將實參按照位置順序傳遞給形參。
如下python代碼,div()函數中的實際參數和形式參數有相應的位置關系,分別傳遞給不同的形參:
運行結果如下:
(二)關鍵字參數
可以通過形參=實參的形式,根據形參的名稱進行傳遞。
如下python代碼:
運行結果如下:
(三)默認參數
在調用函數時,若沒有傳遞值給形參參數,則會使用默認參數,即參數的默認值。若對帶有默認值的形參傳遞,則實參的值會覆蓋設置的默認值。
另外函數中,調用默認參數應放在其它實參后。
例如下列python代碼:
調用該函數時,由于未給garde傳參,形式參數garde使用默認值1,運行結果如下:
若形式參數garde使用傳入值,則會覆蓋設置的默認參數,python代碼如下:
運行結果如下,輸出的年級garde值為1,默認值garde=1被覆蓋:
(四)不定長參數
當調用函數時,傳入的參數不確定時,就可使用不定長參數,它可處理比聲明時更多的參數。
1、元組形式導入(*)
在創建函數時,將參數前面加上*,加上*號的參數被接收后會以元組的形式導入。
下列python代碼,調用函數時2傳遞給the_one形參,后面的3……都被傳遞給the_else形參:
運行結果如下:
2、字典形式導入(**)
在創建函數時,將參數前面加上**,加上**號的參數被接收后會以字典的形式導入。
下列python代碼,調用函數時2傳遞給the_else形參,后面的a=0……都被傳遞給the_else形參:
運行結果如下:
四、匿名函數
通過使用lambda來創建匿名函數,它是一種無需定義函數名的函數,可以通過變量來記錄該函數。
相比普通函數,其只能是單個表達式,即lambda函數的語法中只包含一個語句,所以其功能比較單一且不能被其它程序使用。
下列python代碼,通過變量number_sum記錄該匿名函數:
運行結果如下:
五、遞歸函數
遞歸函數,它可直接或間接地調用函數自身。其中函數遞歸時,要有遞歸公式和邊界條件,遞歸公式用于分解規模較大的問題為規模較小的問題,邊界條件用于終止遞歸函數。
例如下列python代碼:
運行結果如下:
可以這樣理解,通過遞歸依次求得f(x-1)的值,從而得到f(x)的值,如下圖:
總結
以上是生活随笔為你收集整理的Python程序开发——第五章 函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python程序开发——第四章 字典与集
- 下一篇: Python程序开发——第六章 类与对象