函數(shù)
一、引入——代碼復(fù)用情境
? ? 有時(shí)候我們需要反復(fù)使用某些代碼,比如組合圖形出現(xiàn)多個(gè)五角星。如果到處拷貝這些代碼,會(huì)出現(xiàn)弊端,一是程序變得冗長(zhǎng),可讀性差;二是一旦需要修改或擴(kuò)充,要在各處同步改代碼,容易出錯(cuò);三是可維護(hù)性差。

? ? ? 那么我們可以用什么方法解決呢?
二、函數(shù)(functions)
? ?? 我們把這些重復(fù)代碼單獨(dú)收集起來(lái),組成一個(gè)“函數(shù)”對(duì)象,并賦予一個(gè)名稱,在需要用到這些代碼的時(shí)候就通過(guò)名稱加括號(hào)來(lái)“呼叫”這些“函數(shù)” 。前者稱為函數(shù)定義(define),后者稱為函數(shù)調(diào)用(call)。

三、定義函數(shù):def語(yǔ)句
? ?? ? 函數(shù)定義語(yǔ)句def:def <函數(shù)名稱>([<參數(shù)表>]):
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <語(yǔ)句塊>
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? [return <返回值>]
?? ? 幾個(gè)要素:def關(guān)鍵字、函數(shù)名稱(后跟一對(duì)圓括號(hào))、(可選的)參數(shù)表、語(yǔ)句塊、(可選的)返回值。

四、函數(shù)的參數(shù)
? ? 如果代碼塊里沒(méi)有可供調(diào)節(jié)的選項(xiàng),可以定義沒(méi)有參數(shù)的簡(jiǎn)單函數(shù)。一般函數(shù)會(huì)帶有可供調(diào)節(jié)的選項(xiàng)參數(shù),參數(shù)可以有多個(gè),如畫(huà)五角星的函數(shù),包含兩個(gè)參數(shù):大小size和顏色color。

五、函數(shù)的返回值
有時(shí)候函數(shù)會(huì)有返回值,如math模塊中求平方根的函數(shù)math.sqrt(n)返回n的平方根。return語(yǔ)句負(fù)責(zé)結(jié)束函數(shù)執(zhí)行,并返回。return語(yǔ)句可以根據(jù)需要,出現(xiàn)在語(yǔ)句塊中的任何位置。

六、函數(shù)定義中的代碼塊
由于函數(shù)定義def語(yǔ)句僅僅是把代碼塊“打包封裝” ,當(dāng)def語(yǔ)句執(zhí)行的時(shí)候,代碼塊并不會(huì)被執(zhí)行,所以,在執(zhí)行def語(yǔ)句的時(shí)候,除非語(yǔ)句塊中包含了明顯的語(yǔ)法錯(cuò)誤。Python解釋器是不會(huì)檢查語(yǔ)句塊中其它錯(cuò)誤的。

def定義了函數(shù)之后,函數(shù)名稱僅代表這個(gè)“函數(shù)對(duì)象” ,如果需要執(zhí)行語(yǔ)句塊代碼,需要有如下的要素:函數(shù)名稱(后加括號(hào))、括號(hào)內(nèi)放置參數(shù)的具體值。沒(méi)有或者不需要返回值:func(a,b,c) #如調(diào)用star。獲取返回值:v = func(a,b,c)。

? 產(chǎn)生一定范圍內(nèi)的隨機(jī)數(shù)
random.randint(min,max)
? 從列表中隨機(jī)選擇
random.choice(list)

? 定義一個(gè)多邊形函數(shù):
def polygon(n,size,color):
? 繪制正n邊形,邊長(zhǎng)為size,填充顏色color
? 編寫(xiě)一個(gè)程序,繪制現(xiàn)代時(shí)尚幾何多邊形色塊抽象裝飾畫(huà)
? 隨機(jī)模塊random
? t.goto(x,y)

上期參考答案

推薦閱讀
《數(shù)據(jù)科學(xué)與人工智能》公眾號(hào)推薦朋友們學(xué)習(xí)和使用Python語(yǔ)言,需要加入Python語(yǔ)言群的,請(qǐng)掃碼加我個(gè)人微信,備注【姓名-Python群】,我誠(chéng)邀你入群,大家學(xué)習(xí)和分享。
關(guān)于Python語(yǔ)言,有任何問(wèn)題或者想法,請(qǐng)留言或者加群討論。
