python語(yǔ)言 之

函數(shù)概述

函數(shù)就是把能實(shí)現(xiàn)各種功能的代碼打包封裝成一個(gè)一個(gè)代碼塊,可以被重復(fù)使用,把復(fù)雜變簡(jiǎn)單。

1. 函數(shù)的定義

python中定義一個(gè)函數(shù)是使用 def 關(guān)鍵字來(lái)聲明函數(shù)的

定義函數(shù)常用格式:def 后接函數(shù)標(biāo)識(shí)符名稱再加上”():“

def func_name(args):
	function
	return ...
  • ? 首先,函數(shù)名結(jié)尾必須加上冒號(hào),

  • ? 函數(shù)代碼部分必須以 def 關(guān)鍵字開(kāi)頭,任何傳入的參數(shù)必須放在括號(hào)內(nèi)

  • ? 由 return 指定函數(shù)返回值,也就是結(jié)束函數(shù),如果不指定的話,相當(dāng)于函數(shù)結(jié)尾默認(rèn)加上 return None

  • ? 如果 function 的部分只有一行,那么整段可以簡(jiǎn)化和 def 同行。

2.語(yǔ)法

python中函數(shù)的語(yǔ)法:

def 函數(shù)名([形式參數(shù)列表]):
    函數(shù)體
    return 返回值

3.函數(shù)的調(diào)用

定義了函數(shù)后,要想執(zhí)行函數(shù),就需要調(diào)用函數(shù)

函數(shù)調(diào)用的一般形式為:

? 函數(shù)名([實(shí)際參數(shù)列表])

4.函數(shù)的返回值

? 函數(shù)并非總是直接輸出數(shù)據(jù),它可以處理一些數(shù)據(jù),并返回一人或一組值,函數(shù)返回的值被稱為返回值

? 函數(shù)使用 return 語(yǔ)句返回值,并退出函數(shù),函數(shù)返回值可以 0個(gè),1個(gè)或者多個(gè)結(jié)果給被調(diào)用處的變量

5.參數(shù)

參數(shù)按類型分:必備參數(shù),關(guān)鍵字參數(shù),默認(rèn)參數(shù)和不定長(zhǎng)參數(shù)

  • ? 必備參數(shù)(位置參數(shù)) 必填參數(shù)就是必須要填的參數(shù),沒(méi)有參數(shù)就會(huì)報(bào)缺少參數(shù)的異常,

  • 默認(rèn)參數(shù) 默認(rèn)參數(shù)及在函數(shù)的定義的時(shí)候就給了個(gè)默認(rèn)值,在函數(shù)調(diào)用的時(shí)候可以不傳這個(gè)默認(rèn)參數(shù)

  • 不定長(zhǎng)參數(shù) 可變參數(shù)是指參數(shù)的個(gè)數(shù)是可變化的,可以是 0 個(gè),可以是 1 個(gè),也可以是多個(gè),可變參數(shù)在定義的時(shí)候用符號(hào) *args 表示,而且在函數(shù)被調(diào)用的時(shí)候參數(shù)會(huì)被組裝成一個(gè) tuple (類似 list 數(shù)組的一種基本數(shù)據(jù)類型)

  • 關(guān)鍵字參數(shù) 關(guān)鍵詞參數(shù)與可變參數(shù)相似,參數(shù)的數(shù)量是可變的,因此也常被稱為可變關(guān)鍵詞參數(shù)。

$\textcolor{blue}{重點(diǎn)注意點(diǎn)}$

  1. 必備參數(shù)(位置參數(shù)): 調(diào)用函數(shù)時(shí),實(shí)參和形參的順序嚴(yán)格一致,并且實(shí)參和形參的數(shù)量必須相同;

  2. 默認(rèn)參數(shù) :可以不用為設(shè)置了默認(rèn)值的形參進(jìn)行傳值,函數(shù)會(huì)直接使用函數(shù)定義時(shí)設(shè)置的默認(rèn)值;也可以通過(guò)顯示賦值來(lái)替換默認(rèn)值;$\textcolor{blue}{默認(rèn)參數(shù)必須出現(xiàn)在函數(shù)形參列表的最右邊,否則會(huì)提示語(yǔ)法錯(cuò)誤}$

    • 多次調(diào)用函數(shù)并不為默認(rèn)參數(shù)傳遞值,默認(rèn)參數(shù)只在定義時(shí)進(jìn)行一次解釋和初始化,因此要避免使用可變數(shù)據(jù)類型作為函數(shù)的默認(rèn)參數(shù)值,
    • 如果在定義函數(shù)時(shí)某個(gè)參數(shù)為一個(gè)變量,那么參數(shù)的默認(rèn)值只依賴于函數(shù)定義時(shí)該變量的值
    • 可以使用 (函數(shù)名.__defaults__)隨時(shí)查看函數(shù)所有默認(rèn)的值參數(shù)的當(dāng)前值,其返回值為一個(gè)元組,其中的元素依次表示每個(gè)默認(rèn)值參數(shù)的當(dāng)前值
  3. 關(guān)鍵字參數(shù) :是一種按參數(shù)名傳遞值的方式,使用關(guān)鍵字參數(shù)允許函數(shù)用時(shí)參數(shù)的順序與定義時(shí)不一致,解釋器能用參數(shù)名匹配參數(shù)值;

  4. 不定長(zhǎng)參數(shù) :’ *args ‘ 和 ’**kwargs‘ 為不定長(zhǎng)參數(shù),前者是用來(lái)接收任意多個(gè)實(shí)參并將其放在一個(gè)元組中,后者是用來(lái)接收類似關(guān)鍵字參數(shù)一樣顯式賦值形式的多個(gè)實(shí)參并將其放入字典中。

實(shí)參和形參

定義函數(shù)時(shí),圓括號(hào)內(nèi)是使用逗號(hào)分隔的形式參數(shù)列表(簡(jiǎn)稱形參),

調(diào)用函數(shù)時(shí),向其傳遞的參數(shù)為實(shí)參,根據(jù)不同的參數(shù)類型,將實(shí)參的值或引用傳遞給形參

  • 當(dāng)參數(shù)類型為固定類型(如:int , float, string, tuple等)時(shí),在函數(shù)內(nèi)部直接修改形參的值不會(huì)影響實(shí)參
  • 但當(dāng)參數(shù)為可變類型時(shí),修改后的結(jié)果是可以反映到函數(shù)之外的,即實(shí)參也會(huì)等到相應(yīng)的修改。