注明:本系列課程專為全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí) Python 語(yǔ)言程序設(shè)計(jì)考試服務(wù) 目錄 考綱考點(diǎn) 知識(shí)導(dǎo)圖 1,、函數(shù)的基本使用 函數(shù)的定義 函數(shù)的使用 2、函數(shù)的參數(shù)傳遞 可選參數(shù)傳遞 參數(shù)名稱傳遞 函數(shù)的返回值 3,、變量的作用域 局部變量 全局變量 4,、代碼復(fù)用 5、實(shí)例解析:軟文的詩(shī)詞風(fēng) 本章小結(jié)
考綱考點(diǎn)知識(shí)導(dǎo)圖1、函數(shù)的基本使用函數(shù)的定義函數(shù)是一段具有特定功能的,、可重用的語(yǔ)句組,,通過(guò)函數(shù)名來(lái)表示和調(diào)用。經(jīng)過(guò)定義,,一組語(yǔ)句等價(jià)于一個(gè)函數(shù),,在需要使用這組語(yǔ)句的地方,直接調(diào)用函數(shù)名稱即可,。 因此,,函數(shù)的使用包括兩部分:函數(shù)的定義和函數(shù)的使用。 函數(shù)是一種功能抽象,。 Python定義一個(gè)函數(shù)使用def保留字,,語(yǔ)法形式如下:
def <函數(shù)名>(<參數(shù)列表>): <函數(shù)體> return <返回值列表> 函數(shù)名可以是任何有效的Python標(biāo)識(shí)符 參數(shù)列表是調(diào)用該函數(shù)時(shí)傳遞給它的值,可以有零個(gè),、一個(gè)或多個(gè),,當(dāng)傳遞多個(gè)參數(shù)時(shí)各參數(shù)由逗號(hào)分隔,當(dāng)沒(méi)有參數(shù)時(shí)也要保留圓括號(hào),。 函數(shù)體是函數(shù)每次被調(diào)用時(shí)執(zhí)行的代碼,,由一行或多行語(yǔ)句組成。
# 定義一個(gè)對(duì)整數(shù)n求階乘的函數(shù)
如果需要返回值,,使用保留字return和返回值列表,。函數(shù)可以沒(méi)有return語(yǔ)句,,函數(shù)體結(jié)束后會(huì)將控制權(quán)返回給調(diào)用者。
函數(shù)的使用<函數(shù)名>(<實(shí)際賦值參數(shù)列表>) #定義一個(gè)對(duì)整數(shù)n求階乘的函數(shù) # 調(diào)用整數(shù)階乘的函數(shù)
1. 函數(shù)定義 使用def保留字將一段代碼定義為函數(shù),,需要確定函數(shù)的名字,、參數(shù)的名字、參數(shù)的個(gè)數(shù),,使用參數(shù)名稱作為形式參數(shù)(占位符)編寫(xiě)函數(shù)內(nèi)部的功能代碼,。 2. 函數(shù)調(diào)用 通過(guò)函數(shù)名調(diào)用函數(shù)功能,對(duì)函數(shù)的各個(gè)參數(shù)賦予實(shí)際值,,實(shí)際值可以是實(shí)際數(shù)據(jù),,也可以是在調(diào)用函數(shù)前已經(jīng)定義過(guò)的變量。 3.函數(shù)執(zhí)行 函數(shù)被調(diào)用后,,使用實(shí)際參數(shù)(賦予形式參數(shù)的實(shí)際值)參與函數(shù)內(nèi)部代碼的運(yùn)行,,如果有結(jié)果則進(jìn)行輸出。 4.函數(shù)返回 函數(shù)執(zhí)行結(jié)束后,,根據(jù)return保留字的指示決定是否返回結(jié)果,如果返回結(jié)果,,則結(jié)果將被放置到函數(shù)被調(diào)用的位置,,函數(shù)使用完畢,程序繼續(xù)運(yùn)行,。 2,、函數(shù)的參數(shù)傳遞可選參數(shù)傳遞def <函數(shù)名>(<非可選參數(shù)列表>, <可選參數(shù)> = <默認(rèn)值>): <函數(shù)體> return <返回值列表> 需要注意,,可選參數(shù)一般都放置在非可選參數(shù)的后面,,即定義函數(shù)時(shí),先給出所有非可選參數(shù),,然后再分別列出每個(gè)可選參數(shù)及對(duì)應(yīng)的默認(rèn)值,。
>>>def multiply(x, y = 10):
參數(shù)名稱傳遞<函數(shù)名>(<參數(shù)名> = <實(shí)際值>) >>>def multiply(x, y = 10): >>>multiply(y = 2, x = 99)
函數(shù)的返回值return語(yǔ)句用來(lái)結(jié)束函數(shù)并將程序返回到函數(shù)被調(diào)用的位置繼續(xù)執(zhí)行,。 return語(yǔ)句可以出現(xiàn)在函數(shù)中的任何部分,,同時(shí)可以將0個(gè)、1個(gè)或多個(gè)函數(shù)運(yùn)算的結(jié)果返回給函數(shù)被調(diào)用處的變量,。
>>>def multiply(x, y = 10):
函數(shù)可以沒(méi)有return,,此時(shí)函數(shù)并不返回值,。當(dāng)函數(shù)使用return返回多個(gè)值,可以使用一個(gè)變量或多個(gè)變量保存結(jié)果,。
>>>def multiply(x, y = 10):
3,、變量的作用域根據(jù)程序中變量所在的位置和作用范圍,變量分為局部變量和全局變量,。 局部變量?jī)H在函數(shù)內(nèi)部,,且作用域也在函數(shù)內(nèi)部,全局變量的作用域跨越多個(gè)函數(shù),。
局部變量>>>def multiply(x, y = 10): z = x*y # z是函數(shù)內(nèi)部的局部變量 Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> NameError: name 'z' is not defined
全局變量全局變量指在函數(shù)之外定義的變量,,在程序執(zhí)行全過(guò)程有效。全部變量在函數(shù)內(nèi)部使用時(shí),,需要提前使用保留字global聲明,,語(yǔ)法形式如下:
global <全局變量> >>>def multiply(x, y = 10):
上例中,變量n是全局變量,,在函數(shù)multiply()中使用時(shí)需要在函數(shù)內(nèi)部使用global聲明,,定義后即可使用。 如果未使用保留字global聲明,,即使名稱相同,,也不是全局變量。
>>>def multiply(x, y = 10):
4,、代碼復(fù)用函數(shù)是程序的一種基本抽象方式,,它將一系列代碼組織起來(lái)通過(guò)命名供其他程序使用。 函數(shù)封裝的直接好處是代碼復(fù)用,,任何其他代碼只要輸入?yún)?shù)即可調(diào)用函數(shù),,從而避免相同功能代碼在被調(diào)用處重復(fù)編寫(xiě)。代碼復(fù)用產(chǎn)生了另一個(gè)好處,,當(dāng)更新函數(shù)功能時(shí),,所有被調(diào)用處的功能都被更新。 模塊化設(shè)計(jì)指通過(guò)函數(shù)的封裝功能將程序劃分成主程序,、子程序和子程序間關(guān)系的表達(dá),。模塊化設(shè)計(jì)是使用函數(shù)設(shè)計(jì)程序的思考方法,以功能塊為基本單位,,一般有兩個(gè)基本要求:
緊耦合:盡可能合理劃分功能塊,,功能塊內(nèi)部耦合緊密,; 松耦合:模塊間關(guān)系盡可能簡(jiǎn)單,功能塊之間耦合度低,。 耦合性指程序結(jié)構(gòu)中各模塊之間相互關(guān)聯(lián)的程度,,它取決于各模塊間接口的復(fù)雜程度和調(diào)用方式。 緊耦合指模塊或系統(tǒng)間關(guān)系緊密,,存在較多或復(fù)雜的相互調(diào)用,。緊耦合的缺點(diǎn)在于更新一個(gè)模塊可能導(dǎo)致其它模塊變化,復(fù)用較困難,。 松耦合一般基于消息或協(xié)議實(shí)現(xiàn),,系統(tǒng)間交互簡(jiǎn)單。 使用函數(shù)只是模塊化設(shè)計(jì)的必要非充分條件,,根據(jù)計(jì)算需求合理劃分函數(shù)十分重要,。一般來(lái)說(shuō),完成特定功能或被經(jīng)常復(fù)用的一組語(yǔ)句應(yīng)該采用函數(shù)來(lái)封裝,,并盡可能減少函數(shù)間參數(shù)和返回值的數(shù)量,。
5、實(shí)例解析:軟文的詩(shī)詞風(fēng)天生我材必有用,,千金散盡還復(fù)來(lái)。 linewidth = 30 # 預(yù)定的輸出寬度 plist = [',', '!', '?', ',,', ',。', ',!', ',?'] line = line.replace(p, '\n') print(line.center(linewidth, chr(12288))) newlines = lineSplit(txt)
原始文本使用變量txt保存,,程序運(yùn)行效果如下。 滾滾長(zhǎng)江東逝水,,浪花淘盡英雄,。是非成敗轉(zhuǎn)頭空。青山依舊在,,幾度夕陽(yáng)紅,。 第一回 宴桃園豪杰三結(jié)義 斬黃巾英雄首立功 話說(shuō)天下大勢(shì),,分久必合,,合久必分。周末七國(guó)分爭(zhēng),,并入于秦,。及秦滅之后, 楚,、漢分爭(zhēng),,又并入于漢。漢朝自高祖斬白蛇而起義,, 一統(tǒng)天下,,后來(lái)光武中興,
第一回 宴桃園豪杰三結(jié)義 斬黃巾英雄首立功
當(dāng)每句長(zhǎng)度超過(guò)變量linewdith后,,顯示效果并不好,。這需要修改函數(shù)linePrint(),當(dāng)一個(gè)短句行數(shù)超過(guò)限制時(shí),,分行居中顯示,。
while len(line) > linewidth: print(line.center(linewidth, chr(12288)))
本章小結(jié)本章講解了函數(shù)的基本使用方法,包括函數(shù)的定義和調(diào)用,。進(jìn)一步具體講解了函數(shù)的參數(shù)傳遞方法和變量的作用域,,包括可選參數(shù)傳遞、參數(shù)名稱傳遞和函數(shù)的返回值,,初步介紹了函數(shù)的作用和代碼復(fù)用,。通過(guò)軟文的詩(shī)詞風(fēng)實(shí)例幫助讀者理解函數(shù)的定義和使用。 古代的詩(shī)詞歌賦是填詞怡情,,當(dāng)代的詩(shī)詞歌賦則是風(fēng)格怡情,,快來(lái)造個(gè)自己風(fēng)格吧?,!
|