第七章

名字好难想zzz發表於2024-10-09

第七章:函式

7.1 函式的概念

函式可以理解為實現某種功能的程式碼塊,這樣當程式中需要這個功能時就可以直接呼叫,而不必每次都編寫一次。這就好比生活中使用計算器來計算,當需要計算時,直接使用計算器輸入要計算的數,計算完成後顯示計算結果,而不必每次計算都通過手寫演算出結果。

7.2 函式的定義

在上述語法格式中,需注意以下幾點:
def(即define,定義)為關鍵字,表示定義一個函式。
函式名是一個識別符號,注意不能與關鍵字重名。
小括號之間可以用於定義引數,引數是可選的,但小括號不可少。
函式體以冒號起始,並且縮排。
函式體的第一行語句可以選擇性地使用文件字串用來存放函式說明。
return [表示式]結束函式,將表示式的值返回給呼叫者,也可以省略。

7.3 函式的定義

7.3.1 位置引數

位置引數是指函式呼叫時傳遞實參的順序與定義函式的形參順序一致,如例所示。
在這裡插入圖片描述

7.3.2 關鍵引數

關鍵引數是指通過對形參賦值傳遞的引數。關鍵引數允許函式呼叫時傳遞實參的順序與定義函式的形參順序不一致,因為 Python直譯器能夠用形參名匹配實參值,使使用者不必記住位置引數的順序,如例所示
在這裡插入圖片描述

7.3.3 預設引數

如果在函式定義時引數列表中的某個形參有值,就稱這個引數為預設引數。注意預設引數必須放在非預設引數的右側,否則函式將出錯,如例所示。
在這裡插入圖片描述

7.4 函式的返回值

函式呼叫時的引數傳遞實現了從函式外部向函式內部輸入資料,而函式的return語句實現了從函式內部向函式外部輸出資料。
此處需注意,如果函式定義時省略return語句或者只有return而沒有返回值,則Python將認為該函式以“return None”結束,None代表沒有值,如例所示。
在這裡插入圖片描述

7.5 變數的作用域

變數起作用的程式碼範圍稱為變數的作用域,與變數定義的位置密切相關,按照作用域的不同,變數可分為區域性變數和全域性變數。

7.5.1 區域性變數

7.5.2 全域性變數

7.6 函式的巢狀呼叫

在例中,第6行在fun2()函式中呼叫fun1()函式,程式執行時會跳轉到fun1()函式處去執行,執行完fun1()後,接著執行fun2()函式中剩餘的程式碼,如圖所示。
在這裡插入圖片描述

7.7 函式的遞迴呼叫

在函式的巢狀呼叫中,一個函式除了可以呼叫其他函式外,還可以呼叫自身,這就是函式的遞迴呼叫。遞迴必須要有結束條件,否則會無限地遞迴(Python預設支援997次遞迴,多於這個次數將終止)。

相關文章