函數(shù)是 “ 一系列命令的集合”,我們可以通過調(diào)用函數(shù)動(dòng)執(zhí)行某一系列命令。雖然經(jīng)常性地出現(xiàn)于文章中的print()是被錄入在Python的標(biāo)準(zhǔn)庫中的函數(shù),但是,程序員亦可創(chuàng)建自己的函數(shù)。
如果想要定義函數(shù),則需要以“def 函數(shù)名():”的格式為開頭編寫代碼。在這之下的一個(gè)模塊就是一個(gè)函數(shù)的范圍。Python的模塊就如前文中提到的,是根據(jù)縮進(jìn)的等級來進(jìn)行區(qū)分的。
同時(shí),對于函數(shù)也需要設(shè)定參數(shù),函數(shù)可以根據(jù)參數(shù)的值來執(zhí) 行各種指令。在Python中,可以通過使用列表或者雙精度浮點(diǎn)型變量來靈活指定參數(shù)。同時(shí),也可以將函數(shù)運(yùn)行的結(jié)果作為返回值返回。 函數(shù)可以多次調(diào)用。
所以,如果設(shè)計(jì)出出色的函數(shù),那么在編寫復(fù)雜的程序時(shí)可以將行文簡潔地記述出來。
函數(shù)的定義
1
所謂函數(shù)?
函數(shù)就是對程序給出的值按照既定的處理指令執(zhí)行命令并將結(jié)果返回的黑箱。
其中函數(shù)所處 理的值被稱為參數(shù)、函數(shù)所返回的結(jié)果的值被稱為返回值。
2
函數(shù)的定義
將上文中的函數(shù)按Python的方式記述,則會(huì)變?yōu)槿缦赂袷健O襁@樣將函數(shù)的功能記述出來的方式被稱為定義函數(shù)。
參數(shù)在不必要的時(shí)候可以省略
如果要做一個(gè)什么命令都不執(zhí)行的函數(shù),則用pass。
函數(shù)的調(diào)用
1
調(diào)用的基本形式 (位置參數(shù))
函數(shù)可以用如下的方式調(diào)用。在調(diào)用時(shí)使用的參數(shù)被稱為實(shí)參,從原則上說要引入和定義時(shí) 所指定的參數(shù)個(gè)數(shù)一樣的數(shù)量。
如果是不具備參數(shù)的函數(shù),則是以下格式。
2
使用了關(guān)鍵字的參數(shù)指定 (關(guān)鍵參數(shù))
可以通過使用偽參數(shù)的名字來指定其對應(yīng)的實(shí)參。
參數(shù)的全局調(diào)用
介紹利用雙精度浮點(diǎn)型變量或者字典的特點(diǎn)實(shí)現(xiàn)參數(shù)的全局調(diào)用。
1
將參數(shù)賦值到雙精度浮點(diǎn)型變量中的方法
在偽參數(shù)前面添加*就可以使參數(shù)被賦值到雙精度浮點(diǎn)型變量中。
順便說一下,這個(gè)avg函數(shù)可以通過利用數(shù)學(xué)函數(shù)中的sum()更簡潔地書寫。
2
使用字典接收參數(shù)的方法
將關(guān)鍵參數(shù)作為字典接收
在偽參數(shù)之前加上**就可以將關(guān)鍵參數(shù)作為字典來接收。
將字典展開并接收
將參數(shù)作為字典傳遞,若想將傳遞出去的字典在函數(shù)側(cè)展開后接收參數(shù)的話,需要在調(diào)用側(cè) 的參數(shù)前添加 **。
函數(shù)的使用技巧
1
默認(rèn)函數(shù)
可以給參數(shù)規(guī)定一個(gè)默認(rèn)值的函數(shù),指定了默認(rèn)值的函數(shù)在被調(diào)用時(shí),參數(shù)可以省略。
默認(rèn)參數(shù)可以從右側(cè)的參數(shù)開始設(shè)置多個(gè),但是不可以將中間的某個(gè)參數(shù)作為默認(rèn)參數(shù)。
2
函數(shù)對象
在函數(shù)名的末尾不添加(),只寫名稱的格式所表示的是函數(shù)本身。我們將其稱之為函數(shù)對象, 可以像值一樣將其代入到變量中去。
3
函數(shù)的嵌套
我們可以定義函數(shù)中的函數(shù)。內(nèi)部的函數(shù)被稱為本地函數(shù),只可以在特定的函數(shù)中被使用的 函數(shù)都可以被認(rèn)為是本地函數(shù)。
無名函數(shù)
1
什么是無名函數(shù)
如果是進(jìn)行一些簡單的處理的函數(shù),可以使用關(guān)鍵字“l(fā)ambda”來記述,這種寫法可以被稱 作無名函數(shù)(lambda函數(shù))。
2
回調(diào)函數(shù)和無名函數(shù)
函數(shù)可以將別的函數(shù)作為參數(shù)使用,被作為參數(shù)使用的函數(shù)被稱為回調(diào)函數(shù)。
回調(diào)函數(shù)的優(yōu)點(diǎn)是可以在調(diào)用的時(shí)候決定其處理的內(nèi)容。不過,這樣就需要定義一個(gè)只針對 這一目的的特殊函數(shù)。所以,這個(gè)時(shí)候使用無名函數(shù)的話,可以簡化這個(gè)記述過程。
變量范圍
1
本地變量和全局變量
在函數(shù)內(nèi)部使用的變量為本地變量,本地變量只在函數(shù)內(nèi)部有效。與之相對,在函數(shù)外部使 用的變量為全局變量,全局變量可以在任意函數(shù)中調(diào)用。
在函數(shù)被用于嵌套中時(shí),只在其每一單次的函數(shù)調(diào)用內(nèi)有效。
2
非本地變量的更改
在函數(shù)中想要改變其外部的變量的時(shí)候需要注意幾個(gè)要素,像下圖那樣簡單地記述代入命令 是無法改變外部變量的。
如果想要更改函數(shù)外部的變量的話,需要使用global或者nonlocal命令來聲明變量并非本 地變量。
生成器(generator)
1
什么是生成器?
生成器是函數(shù)的一種。通常,函數(shù)只會(huì)返回固定的數(shù)值,但是如果使用了生成器,便會(huì)隨著 調(diào)用次數(shù)的不同,返回不同的數(shù)值。
如果想要使用生成器的話,需要以下幾個(gè)步驟:1.需要定義生成器函數(shù);2.需要調(diào)用生成器函 數(shù)并且初始化;3.將生成器對象作為參數(shù)調(diào)用next()函數(shù)。下文是以0、1、2、3、4的數(shù)值 作為順序輸出的范例。
2
使用了生成器推導(dǎo)式的書寫格式
前一頁所提到的生成器的定義和初始化可以通過利用推導(dǎo)式將其記述成如下簡潔形式,這個(gè) 形式就是生成器推導(dǎo)式。
如果是記述成以下的格式,t將不再是生成器,而是[0,1,2,3,4]這樣的一個(gè)列表。
3
值的傳遞
生成器除了可以被生成,也可以通過使用send()這個(gè)方法將值傳遞出去。
4
樣本程序
●顯示日歷 指定公歷年份和月份,并顯示相應(yīng)的日歷
以上內(nèi)容《圖解Python》
編輯推薦:
日本爆款熱銷書——《圖解Python》,聽說累計(jì)銷量已經(jīng)70萬+!輕松有趣!,這本書全書以插畫的形式,豐富的插圖、簡潔的說明,形式像繪本一樣有趣,內(nèi)容像辭典一樣嚴(yán)謹(jǐn),非常適合想要輕松、愉快學(xué)習(xí)Python編程知識的入門讀者學(xué)習(xí)使用。以每2頁為單位進(jìn)行知識點(diǎn)的講解與說明,內(nèi)容深耕于基礎(chǔ),可以幫助讀者高效快速地進(jìn)行Python編程的學(xué)習(xí)。不需要讀者有任何的編程基礎(chǔ)。從“編程是什么”這樣的入門知識開始進(jìn)行講解。最后奉上書籍實(shí)物圖