Python基本語法5

Python函數(shù)


概念

程序?qū)⒁徊糠謩偰艽a封裝起來,并在需要該功能代碼的地方進(jìn)行調(diào)用,不僅可以實現(xiàn)代碼的復(fù)用,更重要的是可以保證代碼的一致性,當(dāng)需要修改功能代碼是只需要修改函數(shù),調(diào)用函數(shù)的位置不會受到影響。

函數(shù)的分類

根據(jù)函數(shù)來源分

內(nèi)建函數(shù)

Python內(nèi)部定義的函數(shù):int(),round()

自定義函數(shù)

有用戶自己創(chuàng)建的滿足浮渣環(huán)境下用戶的需求

根據(jù)函數(shù)的特點分

嵌套函數(shù)

函數(shù)體中定義了另一個函數(shù),這兩個函數(shù)的關(guān)系就是嵌套關(guān)系

遞歸函數(shù)

一個函數(shù)內(nèi)部調(diào)用自身的函數(shù)稱為遞歸函數(shù)(階乘)

匿名函數(shù)

沒有函數(shù)名的函數(shù),使用lambda表示式定義匿名函數(shù)

lambda 參數(shù):表達(dá)式

lambda表達(dá)式整體可以看做是一個值可以賦值給變量:

f = lambda 參數(shù):表達(dá)式

當(dāng)調(diào)用匿名函數(shù)時可以將該變量看做是函數(shù)名:f(函數(shù))

參數(shù):相當(dāng)于普通函數(shù)的形式參數(shù)

表達(dá)式:相當(dāng)于普通函數(shù)的函數(shù)體,只能當(dāng)是一條語句

創(chuàng)建方法及調(diào)用

格式:

def 函數(shù)體(形參列表):

函數(shù)體

return 返回值

1.函數(shù)在命名時要符合命名規(guī)則

1)可以由字母、數(shù)字和下劃線組成,不能以數(shù)字開頭

2)不能使用關(guān)鍵字

3)嚴(yán)格區(qū)分大小寫

4)函數(shù)名命名時要見名之意

5)函數(shù)都使用小寫字母

2.函數(shù)的形參不需要聲明變量,也不需要指定函數(shù)返回值類型

3.使用該函數(shù)沒有任何的參數(shù),小括號不能省略

4.括號后的:必須保留

5.函數(shù)體相對于關(guān)鍵字def保持一定空格的縮進(jìn)

6.return可以省略的,可以直接在函數(shù)體中將返回值print()輸出

調(diào)用

函數(shù)名(實際參數(shù))

參數(shù)種類

位置參數(shù)

在函數(shù)調(diào)用時必須根據(jù)形參的個數(shù)及位置對其一一賦值,該類形參稱之為位置參數(shù)

默認(rèn)參數(shù)

定義函數(shù)形參是,可以給參數(shù)設(shè)置默認(rèn)值,這個被設(shè)置了默認(rèn)值的參數(shù),稱之為默認(rèn)參數(shù)

注意:默認(rèn)參數(shù)必須定義在位置參數(shù)后面

不定長參數(shù)

定義函數(shù)時,若希望函數(shù)能過處理的參數(shù)個數(shù)比當(dāng)初定義的參數(shù)個數(shù)多,可以使用不定長參數(shù)(可變參數(shù))

*args:用于接收普通參數(shù)并以元組的形式存放

**args:用于接收格式為 可用=value形式的參數(shù),并以字典形式存放

變量作用域

變量種類

局部變量(Local)

在函數(shù)體內(nèi)定義的變量,當(dāng)函數(shù)調(diào)用時優(yōu)先調(diào)用局部變量,只能在函數(shù)體中使用

閉包變量(Enclosed)

函數(shù)嵌套時,內(nèi)嵌函數(shù)定義的變量稱之為閉包變量,外部函數(shù)定義變量稱為局部變量。

1.函數(shù)嵌套關(guān)系

2.內(nèi)嵌函數(shù)使用外部函數(shù)定義的變量

3.外部函數(shù)的返回值是內(nèi)嵌函數(shù)

閉包三個條件

全局變量(Global)

在函數(shù)體外定義的變量,變量可以在整個模塊中使用

內(nèi)建變量(Built)

內(nèi)建函數(shù)定義的變量

LEGB原則

四種變量訪問優(yōu)先級:局部變量>閉包變量>全局變量>內(nèi)建變量

變量間的轉(zhuǎn)換

局部變量轉(zhuǎn)換為全局變量

在函數(shù)體內(nèi)使用global關(guān)鍵字對轉(zhuǎn)換的變量進(jìn)行聲明:global 變量名

閉包變量轉(zhuǎn)換為局部變量

在函數(shù)體中使用關(guān)鍵字對轉(zhuǎn)換的變量進(jìn)行聲明: 變量名

常用函數(shù)

map()

根據(jù)提供的函數(shù)對指定的序列做映射

格式:map(函數(shù),序列)

函數(shù):可以是普通函數(shù)也可以是匿名函數(shù)

序列:字符串,列表,元組

filter()

對指定的序列進(jìn)行過濾操作。(將不滿足函數(shù)條件的序列元素進(jìn)行提?。?/p>

格式:filter(函數(shù),序列)

reduce()

對序列的元素進(jìn)行累積

1.使用reduce()函數(shù)時必須先導(dǎo)入functools模塊:from functools importreduce

2.reduce()函數(shù)中的函數(shù)必須一個有兩個參數(shù)的函數(shù)

格式:reduce(函數(shù),列表)

reduce(lambda x,y :x+y,[1,2,3,4])

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容