第十九章、函數(shù)的高級(jí)話題

這一章將會(huì)介紹一系列更高級(jí)的與函數(shù)相關(guān)的話題:遞歸函數(shù)、函數(shù)屬性和注解、lambda表達(dá)式、如map和filter這樣的函數(shù)式編程工具。

函數(shù)設(shè)計(jì)概念

①、耦合性:對(duì)于輸入使用參數(shù)并且對(duì)于輸出使用return語(yǔ)句。

②、耦合性:只有真正必要的情況下使用全局變量。

③、耦合性:不要改變可變類型的參數(shù),除非調(diào)用者希望這樣做。

④、聚合性:每一個(gè)函數(shù)都應(yīng)該有一個(gè)單一的、統(tǒng)一的目標(biāo)。

⑤、大?。好恳粋€(gè)函數(shù)應(yīng)該相對(duì)較小。

⑥、耦合:避免直接改變?cè)倭硪粋€(gè)模塊文件中的變量。

遞歸函數(shù)

1、用遞歸求和:

2、編碼替代方案:

3、循環(huán)語(yǔ)句VS遞歸:

4、處理任意結(jié)構(gòu):

函數(shù)對(duì)象:屬性和注解

1、間接函數(shù)調(diào)用:

2、函數(shù)內(nèi)?。?/h4>

3、函數(shù)屬性:

4、Python3.0中的函數(shù)注解:

匿名函數(shù):lambda

除了def語(yǔ)句外,Python還提供了一種生成函數(shù)對(duì)象的表達(dá)式形式。

1、lambda表達(dá)式:

lambda的一般形式是關(guān)鍵字lambda,之后是一個(gè)或多個(gè)參數(shù)(與一個(gè)def頭部?jī)?nèi)用括號(hào)括起來(lái)的參數(shù)列表及其相似),緊跟的是一個(gè)冒號(hào),之后是一個(gè)表達(dá)式:lambda argument1,argument2,...argumentN:expression using arguments

①、lambda是一個(gè)表達(dá)式,而不是一個(gè)語(yǔ)句。

②、lambda的主體是一個(gè)單個(gè)的表達(dá)式,而不是一個(gè)代碼塊。

2、為什么使用lambda:

通常來(lái)說(shuō),lambda起到了一種函數(shù)速寫(xiě)的作用,允許在使用的代碼內(nèi)嵌入一個(gè)函數(shù)的定義。它們完全是可選的(你總是能夠使用def來(lái)替代它們),但是在你僅需要嵌入小段可執(zhí)行代碼的情況下它們會(huì)帶來(lái)一個(gè)更簡(jiǎn)潔的代碼結(jié)構(gòu)。

3、如何(不要)讓Python代碼變得晦澀難懂:

由于lambda的主體必須是單個(gè)表達(dá)式(而不是一些語(yǔ)句),由此可見(jiàn)僅能將有限的邏輯封裝到一個(gè)lambda中。

4、嵌套lambda和作用域:

lambda是嵌套函數(shù)作用域查找的最大受益者。

在序列中映射函數(shù):map

map函數(shù)會(huì)對(duì)一個(gè)序列對(duì)象中的每一個(gè)元素應(yīng)用被傳入的函數(shù),并且返回一個(gè)包含了所有函數(shù)調(diào)用結(jié)果的一個(gè)列表。

函數(shù)式編程工具:filter和reduce

函數(shù)式編程的意思就是對(duì)序列應(yīng)用一些函數(shù)的工具。

本章小結(jié)

本章介紹了和函數(shù)相關(guān)的高級(jí)概念:遞歸函數(shù)、函數(shù)注解、lambda表達(dá)式函數(shù)、常用函數(shù)工具map、filter、reduce,以及通用函數(shù)設(shè)計(jì)思想。


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

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

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