認(rèn)識(shí)函數(shù)
HAN SHU
01、函數(shù)介紹
通過(guò)觀察規(guī)律其實(shí)不難發(fā)現(xiàn),Python中所謂的使用函數(shù)就是把你要處理的對(duì)象放 到一個(gè)名字后面的括號(hào)里就可以了。簡(jiǎn)單的來(lái)說(shuō),函數(shù)就是這么使用,可以往里面塞 東西就得到處理結(jié)果。這樣的函數(shù)在Python中還有這些:
以最新的3.50版本為例,一共存在68個(gè)這樣的函數(shù),它們被統(tǒng)稱為內(nèi)建函數(shù)(Built-in Functions)。之所以被稱之為內(nèi)建函數(shù),并不是因?yàn)檫€有“外建函數(shù)”這個(gè)概 念,內(nèi)建的意思是這些函數(shù)在3.50版本安裝完成后你就可以使用它們,是“自帶”的而 已。千萬(wàn)不要為這些術(shù)語(yǔ)搞暈了頭,隨著往后學(xué)習(xí),我們還能看見(jiàn)更多這樣的術(shù)語(yǔ), 其實(shí)都只是很簡(jiǎn)單的概念,畢竟在一個(gè)專業(yè)領(lǐng)域內(nèi)為了表達(dá)準(zhǔn)確和高效往往會(huì)使用專 業(yè)術(shù)語(yǔ)。
現(xiàn)在你并不必急著把這些函數(shù)是怎么用的都搞明白,其中一些內(nèi)建函數(shù)很實(shí)用, 但是另外一些就不常用,比如涉及字符編碼的函數(shù)ascii()5 bin(), chr()等等,這些都 是相對(duì)底層的編程設(shè)計(jì)中才會(huì)使用到的函數(shù),在你深入到一定程度的時(shí)候才會(huì)派的上 用場(chǎng)。
附上Python官網(wǎng)中各個(gè)函數(shù)介紹的鏈接:https://docs.Python.org/3/1 ibrary/ functions.html,有興趣深入了解的話可以看一眼。
02、開(kāi)始創(chuàng)建函數(shù)
我們需要學(xué)會(huì)使用已有的函數(shù),更需要學(xué)會(huì)創(chuàng)建新的函數(shù)。自帶的函數(shù)數(shù)量是有 限的,想要讓Python幫助我們做更多的事情,就要自己設(shè)計(jì)符合使用需求的函數(shù)。 創(chuàng)建函數(shù)也很簡(jiǎn)單,其實(shí)我們?cè)诙嗄昵暗某踔姓n堂上早已掌握了其原理。
先試著在命令行/終端中進(jìn)入Python環(huán)境,輸入這樣的公式:
看著有點(diǎn)眼熟吧?第一個(gè)是數(shù)學(xué)的梯形計(jì)算公式,而第二個(gè)是物理的攝氏度與華
氏度的轉(zhuǎn)換公式。
函數(shù)是編程中最基本的魔法,但同時(shí)一切的復(fù)雜又都被隱含其中。它的原理和我 們學(xué)習(xí)的數(shù)學(xué)公式相似,但是并不完全一樣,等到后面一點(diǎn)你就知道我為什么這么說(shuō) 了。這里面先介紹幾個(gè)常見(jiàn)的詞:
• def (即define,定義)的含義是創(chuàng)建函數(shù),也就是定義一個(gè)函數(shù)。
• arg (即argument,參數(shù))有時(shí)你還能見(jiàn)到這種寫(xiě)法:parameter,二者都是參數(shù)的 意思但是稍有不同,這里不展開(kāi)說(shuō)了。
• return即返回結(jié)果。
好,現(xiàn)在我們讀一遍咒語(yǔ):Defne a function named 'function' which has two arguments : arg1 and arg2,returns the result 'Something'是不是很易讀很順暢?代碼的表達(dá)比英文句子更簡(jiǎn)潔一點(diǎn):
需要注意的是:
• def和return是關(guān)鍵字(keyword),Python就是靠識(shí)別這些特定的關(guān)鍵字來(lái)明 白用戶的意圖,實(shí)現(xiàn)更為復(fù)雜的編程。像這樣的關(guān)鍵字還有一些,在后面的章節(jié)中我 們會(huì)細(xì)致講解;
•在閉合括號(hào)后面的冒號(hào)必不可少,而且非常值得注意的是你要使用英文輸入法進(jìn) 行輸入,否則就是錯(cuò)誤的語(yǔ)法,如果你在IDE中輸入中文的冒號(hào)和括號(hào),會(huì)有這樣的錯(cuò) 誤提示:
def function」):return 'Somethina' def function ():
SyntaxError: invalid character in identifier
•如果在IDE中冒號(hào)后面回車(換行)你會(huì)自動(dòng)地得到一個(gè)縮進(jìn)。函數(shù)縮進(jìn)后面的語(yǔ) 句被稱作是語(yǔ)句塊(block),縮進(jìn)是為了表明語(yǔ)句和邏輯的從屬關(guān)系,是Python最 顯著的特征之一。很多初學(xué)者會(huì)忽視縮進(jìn)問(wèn)題,導(dǎo)致代碼無(wú)法成功運(yùn)行,在這里需要特別注意。
03、傳遞參數(shù)與參數(shù)類型
前面大刀闊斧地說(shuō)了關(guān)于函數(shù)定義和使用,在這一節(jié)我們談?wù)撘恍┘?xì)節(jié)但是重要 的問(wèn)題一一參數(shù)。對(duì)于在一開(kāi)始就設(shè)定了必要參數(shù)的函數(shù)來(lái)說(shuō),我們打出函數(shù)的名稱 并向括號(hào)中傳遞參數(shù)實(shí)現(xiàn)對(duì)函數(shù)的調(diào)用(call),只要把參數(shù)放進(jìn)函數(shù)的括號(hào)中即 可,就像是這樣:
fahrenheit_converter(35) fahrenheit_converter(15) fahrenheit_converter(0) fahrenheit_converter(-3)
更直觀地,在調(diào)用函數(shù)的時(shí)候,我們將每個(gè)參數(shù)名稱后面賦予一個(gè)我們想要傳入 的值。這種以名稱作為一一對(duì)應(yīng)的參數(shù)傳入方式被稱作是關(guān)鍵詞參數(shù)。
想一想去餐廳預(yù)約與就餐的流程,找到你預(yù)約的座位一般是用你留下的姓名,你 就是一個(gè)參數(shù),你會(huì)被按照姓名的方式傳入你預(yù)定的座位,這個(gè)就是關(guān)鍵詞參數(shù)傳 入;接下來(lái)是上菜,菜品按照你的座位號(hào)的方式來(lái)傳入你的桌子,而這就相當(dāng)于是位 置傳入?yún)?shù)。
也許你現(xiàn)在想不太明白這種傳入的方式有何作用,沒(méi)有關(guān)系,在后面我們會(huì)和其他知識(shí)再一并進(jìn)行講解的,到那時(shí)你就會(huì)對(duì)參數(shù)的傳入方式有更高層次的認(rèn)識(shí)。
寧夏一沐智云網(wǎng)絡(luò)科技有限公司