簡單地說,一個函數(shù)就是一組Python語句的組合,它們可以在程序中運行一次或多次運行。Python中的函數(shù)在其他語言中也叫做過程或子例程,那么這些被包裝起來的語句通過一個函數(shù)名稱來調(diào)用。
有了函數(shù),我們可以在很大程度上減少復(fù)制及粘貼代碼的次數(shù)了(相信很多人在剛開始時都有這樣的體驗)。我們可以把相同的代碼可以提煉出來做成一個函數(shù),在需要的地方只需要調(diào)用即可。那么,這樣就提高了代碼的復(fù)用率了,整體代碼看起來比較簡練,沒有那么臃腫了。
函數(shù)在Python中是最基本的程序結(jié)構(gòu),用來最大化地讓我們的代碼進行復(fù)用;與此同時,函數(shù)可以把一個錯綜復(fù)雜的系統(tǒng)分割為可管理的多個部分,簡化編程、代碼復(fù)用。
接下來我們看看什么是函數(shù),及函數(shù)該如何定義。有兩種方式可以進行函數(shù)的定義,分別是def及l(fā)ambda關(guān)鍵字。
先總結(jié)一下為什么要使用函數(shù)?
代碼復(fù)用最大化及最小化冗余代碼;
過程分解(拆解)。把一個復(fù)雜的任務(wù)拆解為多個小任務(wù)。
函數(shù)定義的語法為:
def func_name(arg1, arg2, arg3, ..., argN): statement return value
根據(jù)上面定義,可以簡單地描述為:Python中的函數(shù)是具有0個或多個參數(shù),具有若干行語句并且具有返回值(返回值可有可無)的一個語句塊(注意縮進)。
那么我們就定義一個比較簡單的函數(shù),該函數(shù)沒有參數(shù),進入ipython交互式環(huán)境:
In[1]: def hello(): ...: print('Leave me alone, the world') ...:調(diào)用(執(zhí)行)該函數(shù):
In[2]: hello()Leave me alone, the world
我們發(fā)現(xiàn)hello()函數(shù)并沒有return語句,在Python中,如果沒有顯式的執(zhí)行return語句,那么函數(shù)的返回值默認為None。
我們說過,定義函數(shù)有兩種形式,另外一種形式是使用lambda來定義。使用lambda定義的函數(shù)是匿名函數(shù),這個我們在后面的內(nèi)容進行講解,這里暫且不表。
定義函數(shù)的時候,我們把參數(shù)的名字和位置確定下來,函數(shù)的接口定義就完成了。對于函數(shù)的調(diào)用者來說,只需要知道如何傳遞正確的參數(shù),以及函數(shù)將返回什么樣的值就夠了,函數(shù)內(nèi)部的復(fù)雜的邏輯被封裝起來,調(diào)用者無需了解。
Python的函數(shù)定義非常簡單,但靈活度卻非常大。除了正常定義的必選參數(shù)外,還可以使用默認參數(shù)、可變參數(shù)和關(guān)鍵字參數(shù),使得函數(shù)定義出來的接口,不但能處理復(fù)雜的參數(shù),還可以簡化調(diào)用者的代碼。
默認參數(shù)使得API簡潔,但不失靈活性。當(dāng)一個參數(shù)有默認值時,調(diào)用時如果不傳遞此參數(shù)時,會使用默認值。
新聞熱點
疑難解答
圖片精選