函數(shù)基礎(chǔ)-python學(xué)習(xí)14

函數(shù)

定義:函數(shù)是組織好的,可以重復(fù)使用的,可以實(shí)現(xiàn)單一功能的代碼。

比如,前面學(xué)過(guò)的print()函數(shù)、int()函數(shù)等

括號(hào)里放的東西,也就是我們需要輸入給函數(shù)的數(shù)據(jù),它在函數(shù)中被稱作【參數(shù)】?!緟?shù)】指向的是函數(shù)要接收、處理怎樣的數(shù)據(jù)(你也可以把它理解成自變量)。

自定義和調(diào)用函數(shù)

格式:def (函數(shù)名): ? ? ? ? ? ? ? ? ?? 例如:? def math(x):

? ? ? ? ? ? ? ? ? 函數(shù)體 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? y=3x+5

? ? ? ? ? ? ? ? ? return語(yǔ)句 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return y

調(diào)用函數(shù): 就是輸入函數(shù)名和參數(shù)所對(duì)應(yīng)的值,這個(gè)過(guò)程在函數(shù)里叫作參數(shù)的傳遞(pass)。


函數(shù)的參數(shù)

函數(shù)中常見(jiàn)的參數(shù)有:位置參數(shù)、默認(rèn)參數(shù)和不定長(zhǎng)參數(shù)。

沒(méi)有return語(yǔ)句的函數(shù),Python也會(huì)在末尾隱性地加上return None,即返回None值。

1、位置參數(shù):舉例解釋

圖片來(lái)自分變

這里的'話梅花生'和'牛肉拉面'是對(duì)應(yīng)參數(shù)的位置順序傳遞的,所以appetizer和course被叫作【位置參數(shù)】,當(dāng)有多個(gè)參數(shù)的時(shí)候,我們就必須按照順序和數(shù)量傳遞,這也是最常見(jiàn)的參數(shù)類型。

2、默認(rèn)參數(shù):

圖片來(lái)自風(fēng)變

默認(rèn)參數(shù),是直接在定義函數(shù)的時(shí)候里給參數(shù)賦值。

需要注意的是:默認(rèn)參數(shù)必須放在位置參數(shù)之后。

如果一個(gè)函數(shù)的某個(gè)參數(shù)值總是固定的,那么設(shè)置默認(rèn)參數(shù)就免去了每次都要傳遞的麻煩。

默認(rèn)參數(shù)并不意味著不能改變,默認(rèn)參數(shù)也可以給與新的賦值;


3、不定長(zhǎng)參數(shù):

即傳遞給參數(shù)的數(shù)量是可選的、不確定的。

格式比較特殊,是一個(gè)星號(hào)*加上參數(shù)名,它的返回值也比較特殊,如圖:

圖片來(lái)自風(fēng)變

這里order 的類型是元組,元組中的元素是不可更改的;

不定長(zhǎng)參數(shù)可以接受任意數(shù)量的值。


返回多個(gè)值:

要返回多個(gè)值,只需將返回的值寫在return語(yǔ)句后面,用英文逗號(hào)隔開(kāi)即可;

這里用到的是random模塊中的.choice()隨機(jī)選擇函數(shù);


多個(gè)函數(shù)間的配合:

一個(gè)程序往往是通過(guò)多個(gè)函數(shù)的配合來(lái)實(shí)現(xiàn)的;

當(dāng)多個(gè)函數(shù)同時(shí)運(yùn)行時(shí),就涉及函數(shù)中一個(gè)非常重要的概念 —— 變量作用域;

舉例:

變量作用域:程序中的變量并不是在哪個(gè)位置都可以被使用的,使用權(quán)限決定于這個(gè)變量是在哪里賦值的。關(guān)于這個(gè)概念,目前我們只需要掌握下面兩點(diǎn)即可:

第一點(diǎn):一個(gè)在函數(shù)內(nèi)部賦值的變量?jī)H能在該函數(shù)內(nèi)部使用(局部作用域),它們被稱作【局部變量】,如cost()函數(shù)里的variable_cost,他只能用于cost()內(nèi)部,不能再第10行,sum_cost()函數(shù)中使用。

第二點(diǎn):在所有函數(shù)之外賦值的變量,可以在程序的任何位置使用(全局作用域),它們被稱作【全局變量】,如第一行的rent。

那要怎么解決“局部變量”和”全局變量“之間的矛盾呢?有幾種方法可供參考,第一種方法最取巧:把局部變量都放在函數(shù)外,變成全局變量

那有沒(méi)有一個(gè)能在函數(shù)內(nèi)修改的方法呢?這時(shí)候global語(yǔ)句就能派上用場(chǎng)了,它可以將局部變量聲明為全局變量,如下圖:

global語(yǔ)句一般寫在函數(shù)體的第一行,它會(huì)告訴Python,“我希望variable_cost是個(gè)全局變量,所以請(qǐng)不要用這個(gè)名字創(chuàng)建一個(gè)局部變量”。所以上面圖中的sum_cost()函數(shù)內(nèi)部現(xiàn)在可以直接使用聲明后的全局變量variable_cost。

?著作權(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)容