Python程序設(shè)計_教學(xué)大綱_段震.doc_第1頁
Python程序設(shè)計_教學(xué)大綱_段震.doc_第2頁
Python程序設(shè)計_教學(xué)大綱_段震.doc_第3頁
Python程序設(shè)計_教學(xué)大綱_段震.doc_第4頁
Python程序設(shè)計_教學(xué)大綱_段震.doc_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

資料收集于網(wǎng)絡(luò) 如有侵權(quán)請聯(lián)系網(wǎng)站 刪除 謝謝 Python程序設(shè)計教學(xué)大綱 安徽大學(xué) 計算機(jī)科學(xué)與技術(shù) 學(xué)院 2015 年 10 月課程性質(zhì)與設(shè)置目的要求(前言)Python程序設(shè)計課程是計算機(jī)科學(xué)與技術(shù)學(xué)院各專業(yè)的專業(yè)選修課程。Python是一門開源的高級動態(tài)編程語言,支持命令式編程、函數(shù)式編程、面向?qū)ο蟪绦蛟O(shè)計,語法簡潔清晰,并且擁有大量功能豐富而強(qiáng)大的標(biāo)準(zhǔn)庫和擴(kuò)展庫。本課程將從Python語言的實(shí)現(xiàn)機(jī)制入手,結(jié)合示例程序和上機(jī)實(shí)驗(yàn),較為系統(tǒng)地介紹Python語言的主要特征和編程技術(shù)。設(shè)置本課程的目的是:使學(xué)習(xí)者在全面了解Python技術(shù)歷史、現(xiàn)狀與發(fā)展趨勢的基礎(chǔ)上,系統(tǒng)掌握Python基本概念、編程思想以及程序設(shè)計技術(shù),具備熟練的Python編程技能和面向?qū)ο筌浖O(shè)計技術(shù)思想,完成本課程的學(xué)習(xí)后能夠熟練地綜合應(yīng)用Python技術(shù)和面向?qū)ο蟮乃枷刖帉懗绦蚪鉀Q現(xiàn)實(shí)生活中的問題,最終提高程序設(shè)計水平和計算機(jī)應(yīng)用能力,從而能勝任企業(yè)軟件研發(fā)以及科研院所的研發(fā)、教學(xué)任務(wù)。學(xué)習(xí)本課程的要求是:學(xué)習(xí)者應(yīng)理解Python的編程模式,熟練運(yùn)用Python列表、元組、字典、集合等基本數(shù)據(jù)類型以及相關(guān)列表推導(dǎo)式、切片等特性來解決實(shí)際問題,熟練掌握Python分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、函數(shù)設(shè)計以及類的設(shè)計與使用,熟練使用正則表達(dá)式處理字符串,同時掌握不同領(lǐng)域的Python擴(kuò)展模塊,并能夠解決實(shí)際問題。先修課程要求:無本課程計劃34學(xué)時,2學(xué)分。選用教材:董付國. Python程序設(shè)計(第2版).北京:清華大學(xué)出版社,2016.5.考核方法:考查教學(xué)進(jìn)程安排表:周次學(xué)時數(shù)教 學(xué) 主 要 內(nèi) 容教學(xué)環(huán)節(jié)備注13Python的安裝與使用Python擴(kuò)展庫的管理Python中的數(shù)據(jù)類型講課23Python中的內(nèi)置函數(shù)、基本輸入輸出Python代碼編寫規(guī)范Python文件名和程序運(yùn)行講課33Python中的列表使用講課43Python中的元組、字典及集合的使用講課53選擇和循環(huán)結(jié)構(gòu)講課63字符串和正則表達(dá)式講課73函數(shù)的設(shè)計與使用講課83類的定義與使用類的方法和屬性講課93文本文件的基本操作二進(jìn)制文件操作文件操作和目錄操作講課103異常處理結(jié)構(gòu)與程序調(diào)試GUI編程講課113+1網(wǎng)絡(luò)程序設(shè)計多線程編程課程隨堂測試講課+測試第一章 基礎(chǔ)知識一、學(xué)習(xí)目的Python語言的發(fā)展過程、安裝及簡單使用;Python程序設(shè)計中的基本知識;Python代碼的編寫規(guī)范;Python文件名的要求;Python程序的運(yùn)行方式;編寫自己的包以及基本示例。本章計劃6學(xué)時。二、課程內(nèi)容1.0 Python是一種怎樣的語言Python是一門跨平臺、開源、免費(fèi)的解釋型高級動態(tài)編程語言,同時也支持偽編譯將Python源程序轉(zhuǎn)換為字節(jié)碼來優(yōu)化程序和提高運(yùn)行速度。Python支持命令式編程、函數(shù)式編程,完全支持面向?qū)ο蟪绦蛟O(shè)計,語法簡潔清晰,并且擁有大量的幾乎支持所有領(lǐng)域應(yīng)用開發(fā)的成熟擴(kuò)展庫。1.1 如何選擇Python版本多版本共存與切換簡便方法:更改系統(tǒng)環(huán)境變量path查看已安裝版本的方法有時候可能需要同時安裝多個不同的版本,并根據(jù)不同的開發(fā)需求在兩個版本之間進(jìn)行切換。1.2 Python安裝與簡單使用默認(rèn)編程環(huán)境:IDLE1.3 使用pip管理第三方包Python2中需要單獨(dú)安裝下載地址:/pypi/pip安裝方法:cmd=python get-pip.py用法示例Python3安裝包中已默認(rèn)包含pip1.4.1 Python的對象模型對象是python語言中最基本的概念,在python中處理的每樣?xùn)|西都是對象。python中有許多內(nèi)置對象可供編程者使用,內(nèi)置對象可直接使用,如數(shù)字、字符串、列表、del等;非內(nèi)置對象需要導(dǎo)入模塊才能使用,如正弦函數(shù)sin(x),隨機(jī)數(shù)產(chǎn)生函數(shù)random( )等。常用內(nèi)置對象1.4.2 Python變量在Python中,不需要事先聲明變量名及其類型,直接賦值即可創(chuàng)建各種類型的對象變量。雖然不需要在使用之前顯式地聲明變量及其類型,但是Python仍屬于強(qiáng)類型編程語言。Python還是一種動態(tài)類型語言Python采用的是基于值的內(nèi)存管理方式Python具有自動內(nèi)存管理功能在定義變量名的時候,需要注意的問題。1.4.3 數(shù)字?jǐn)?shù)字是python中最常用的對象,屬于不可變對象??梢员硎救我獯笮〉臄?shù)字。1.4.4 字符串用單引號、雙引號或三引號括起來的符號系列稱為字符串單引號、雙引號、三單引號、三雙引號可以互相嵌套,用來表示復(fù)雜字符串。1. 字符串合并2. 字符串格式化3. 轉(zhuǎn)義字符1.4.5 操作符和表達(dá)式Python中很多運(yùn)算符有多重含義,在程序中運(yùn)算符的具體含義取決于操作數(shù)的類型。在Python中,單個任何類型的對象或常數(shù)屬于合法表達(dá)式。1.4.6 常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用執(zhí)行下面的命令可以列出所有內(nèi)置函數(shù) dir(_builtins_)1.4.7 對象的刪除在Python中具有自動內(nèi)存管理功能。可以使用del命令來顯式刪除對象并解除與值之間的指向關(guān)系。1.4.8 基本輸入輸出用Python進(jìn)行程序設(shè)計,輸入是通過input( )函數(shù)來實(shí)現(xiàn)的。盡管形式一樣,Python 2.x和Python 3.x對該函數(shù)的解釋略有不同。1.4.9 模塊的使用Python默認(rèn)安裝僅包含部分基本或核心模塊,但用戶可以安裝大量的擴(kuò)展模塊,pip是管理模塊的重要工具import 模塊名1.5 Python代碼規(guī)范(1)縮進(jìn)(2)注釋(3)每個import只導(dǎo)入一個模塊(4)如果一行語句太長,可以在行尾加上來換行分成多行,但是更建議使用括號來包含多行內(nèi)容。(5)必要的空格與空行(6)適當(dāng)使用異常處理結(jié)構(gòu)進(jìn)行容錯,后面將詳細(xì)講解。(7)軟件應(yīng)具有較強(qiáng)的可測試性,測試與開發(fā)齊頭并進(jìn)。1.6 Python文件名1.7 Python腳本的“_name_”屬性1.8 編寫自己的包與模塊包可以看做處于同一目錄中的模塊。1.9 Python快速入門問題1:用戶輸入一個三位自然數(shù),計算并輸出其佰位、十位和個位上的數(shù)字。問題2:已知三角形的兩邊長及其夾角,求第三邊長。問題3:任意輸入三個英文單詞,按字典順序輸出。三、重點(diǎn)、難點(diǎn)提示(一)Python中的對象(二)Python代碼的編寫規(guī)范四、思考與練習(xí)安裝Python開發(fā)包,并練習(xí)使用pip管理擴(kuò)展庫編程實(shí)現(xiàn)教材上的示例習(xí)題1.10第二章 Python數(shù)據(jù)結(jié)構(gòu)一、學(xué)習(xí)目的Python中的數(shù)據(jù)結(jié)構(gòu),包括列表、元祖、字典、集合以及其他基本數(shù)據(jù)結(jié)構(gòu)。本章計劃6學(xué)時。二、課程內(nèi)容2.1 列表列表是Python中內(nèi)置可變序列,是若干元素的有序集合,列表中的每一個數(shù)據(jù)稱為元素,列表的所有元素放在一對中括號“”和“”中,并使用逗號分隔開;當(dāng)列表元素增加或刪除時,列表對象自動進(jìn)行擴(kuò)展或收縮內(nèi)存,保證元素之間沒有縫隙;在Python中,一個列表中的數(shù)據(jù)類型可以各不相同,可以同時分別為整數(shù)、實(shí)數(shù)、字符串等基本類型,甚至是列表、元素、字典、集合以及其他自定義類型的對象。l 列表創(chuàng)建與刪除l 列表元素的增加l 列表元素的刪除l 列表元素訪問與計數(shù)l 成員資格判斷l(xiāng) 切片操作l 列表排序l 用于序列操作的常用內(nèi)置函數(shù)l 列表推導(dǎo)式2.2 元組元組和列表類似,但屬于不可變序列,元組一旦創(chuàng)建,用任何方法都不可以修改其元素。元組的定義方式和列表相同,但定義時所有元素是放在一對圓括號“(”和“)”中,而不是方括號中。l 元組創(chuàng)建與刪除l 元組與列表的區(qū)別l 序列解包l 生成器推導(dǎo)式2.3 字典字典是鍵值對的無序可變集合。定義字典時,每個元素的鍵和值用冒號分隔,元素之間用逗號分隔,所有的元素放在一對大括號“”和“”中。字典中的每個元素包含兩部分:鍵和值,向字典添加一個鍵的同時,必須為該鍵增添一個值。字典中的鍵可以為任意不可變數(shù)據(jù),比如整數(shù)、實(shí)數(shù)、復(fù)數(shù)、字符串、元組等等。字典中的鍵不允許重復(fù)。globals()返回包含當(dāng)前作用域內(nèi)所有全局變量和值的字典locals()返回包含當(dāng)前作用域內(nèi)所有局部變量和值的字典l 字典創(chuàng)建與刪除l 字典元素的讀取l 字典元素的添加與修改l 字典應(yīng)用案例l 有序字典l 字典推導(dǎo)式2.4 集合集合是無序可變集合,使用一對大括號界定,元素不可重復(fù)。l 集合的創(chuàng)建與刪除l 集合操作l 集合推導(dǎo)式2.5 再談內(nèi)置方法sorted()2.6 其他數(shù)據(jù)結(jié)構(gòu)在Python中,除了基本序列之外,還有其他一些常用的數(shù)據(jù)結(jié)構(gòu),如堆、棧、隊(duì)列、樹、圖等等。有些結(jié)構(gòu)Python已經(jīng)提供,而有些則需要自己利用基本數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)。l 堆l 隊(duì)列l(wèi) 棧l 鏈表l 二叉樹l 有向圖三、重點(diǎn)、難點(diǎn)提示(一)Python中的常見數(shù)據(jù)結(jié)構(gòu)及其使用差異(二)Python運(yùn)算符的多重含義四、思考與練習(xí)編程實(shí)現(xiàn)教材上的示例習(xí)題2.3 / 2.5 / 2.9 / 2.10第三章 選擇與循環(huán)一、學(xué)習(xí)目的Python中的運(yùn)算符和條件表達(dá)式;選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的基本使用。本章計劃3學(xué)時。二、課程內(nèi)容3.1 條件表達(dá)式算術(shù)運(yùn)算符:+、-、*、/、/、%、*關(guān)系運(yùn)算符:、=、=、!=,可以連續(xù)使用測試運(yùn)算符:in、not in、is、is not邏輯運(yùn)算符:and、or、not,注意短路求值位運(yùn)算符:、&、|、 、 3.2 選擇結(jié)構(gòu)l 單分支選擇結(jié)構(gòu)l 雙分支結(jié)構(gòu)l 多分支結(jié)構(gòu)l 選擇結(jié)構(gòu)的嵌套l 選擇結(jié)構(gòu)應(yīng)用3.3 循環(huán)結(jié)構(gòu)l for循環(huán)與while循環(huán)Python提供了兩種基本的循環(huán)結(jié)構(gòu)語句while語句、for語句。while循環(huán)一般用于循環(huán)次數(shù)難以提前確定的情況,也可以用于循環(huán)次數(shù)確定的情況;for循環(huán)一般用于循環(huán)次數(shù)可以提前確定的情況,尤其是用于枚舉序列或迭代對象中的元素;一般優(yōu)先考慮使用for循環(huán)。相同或不同的循環(huán)結(jié)構(gòu)之間都可以互相嵌套,實(shí)現(xiàn)更為復(fù)雜的邏輯。l 循環(huán)結(jié)構(gòu)的優(yōu)化為了優(yōu)化程序以獲得更高的效率和運(yùn)行速度,在編寫循環(huán)語句時,應(yīng)盡量減少循環(huán)內(nèi)部不必要的計算,將與循環(huán)變量無關(guān)的代碼盡可能地提取到循環(huán)之外。對于使用多重循環(huán)嵌套的情況,應(yīng)盡量減少內(nèi)層循環(huán)中不必要的計算,盡可能地向外提。3.4 break和continue語句break語句在while循環(huán)和for循環(huán)中都可以使用,一般放在if選擇結(jié)構(gòu)中,一旦break語句被執(zhí)行,將使得整個循環(huán)提前結(jié)束。continue語句的作用是終止當(dāng)前循環(huán),并忽略continue之后的語句,然后回到循環(huán)的頂端,提前進(jìn)入下一次循環(huán)。除非break語句讓代碼更簡單或更清晰,否則不要輕易使用。3.5 案例精選三、重點(diǎn)、難點(diǎn)提示(一)Python的關(guān)系運(yùn)算符和條件表達(dá)式(二)Python中的代碼縮進(jìn)(三)循環(huán)代碼的優(yōu)化四、思考與練習(xí)編程實(shí)現(xiàn)教材上的示例習(xí)題3.5 / 3.7 / 3.8第四章 字符串與正則表達(dá)式一、學(xué)習(xí)目的Python中的字符串及字符串的常用方法;正則表達(dá)式的基本內(nèi)容及綜合運(yùn)用。本章計劃3學(xué)時。二、課程內(nèi)容4.1 字符串在Python中,字符串也屬于序列類型,除了支持序列通用方法(包括分片操作)以外,還支持特有的字符串操作方法。字符串屬于不可變序列類型Python字符串駐留機(jī)制:對于短字符串,將其賦值給多個不同的對象時,內(nèi)存中只有一個副本,多個對象共享該副本。長字符串不遵守駐留機(jī)制。判斷一個變量s是否為字符串,應(yīng)使用isinstance(s,basestring)。在Python3之前,字符串有str和unicode兩種,其基類都是basestring。在Python3之后合二為一了。在Python3中,程序源文件默認(rèn)為UTF-8編碼,全面支持中文,字符串對象不再有encode和decode方法。l 字符串格式化l 字符串常用方法l 字符串常量4.2 正則表達(dá)式正則表達(dá)式是字符串處理的有力工具和技術(shù)。正則表達(dá)式使用某種預(yù)定義的模式去匹配一類具有共同特征的字符串,主要用于處理字符串,可以快速、準(zhǔn)確地完成復(fù)雜的查找、替換等處理要求。Python中,re模塊提供了正則表達(dá)式操作所需要的功能。l 正則表達(dá)式元字符.:匹配除換行符以外的任意單個字符*:匹配位于*之前的0個或多個字符+:匹配位于+之前的一個或多個字符|:匹配位于|之前或之后的字符:匹配行首,匹配以后面的字符開頭的字符串$:匹配行尾,匹配以$之前的字符結(jié)束的字符串?:匹配位于?之前的0個或1個字符:表示位于之后的為轉(zhuǎn)義字符:匹配位于中的任意一個字符-:用在之內(nèi)用來表示范圍():將位于()內(nèi)的內(nèi)容作為一個整體來對待:按中的次數(shù)進(jìn)行匹配b:匹配單詞頭或單詞尾B:與b含義相反d:匹配任何數(shù)字,相當(dāng)于0-9D:與d含義相反s:匹配任何空白字符S:與s含義相反w:匹配任何字母、數(shù)字以及下劃線,相當(dāng)于a-zA-Z0-9_W:與w含義相反l re模塊主要方法compile(pattern,flags):創(chuàng)建模式對象search(pattern,string,flags):在字符串中尋找模式match(pattern,string,flags):從字符串的開始處匹配模式findall(pattern,string,flags):列出字符串中模式的所有匹配項(xiàng)split(pattern,string,maxsplit=0):根據(jù)模式匹配項(xiàng)分割字符串sub(pat,repl,string,count=0):將字符串中所有pat的匹配項(xiàng)用repl替換escape(string):將字符串中所有特殊正則表達(dá)式字符轉(zhuǎn)義l 直接使用re模塊方法l 使用正則表達(dá)式對象l 子模式與match對象l 正則表達(dá)式應(yīng)用案例三、重點(diǎn)、難點(diǎn)提示(一)正則表達(dá)式子模塊擴(kuò)展語法(二)字符串編碼,字符串格式化四、思考與練習(xí)編程實(shí)現(xiàn)教材上的示例習(xí)題4.2 / 4.3 / 4.5第五章 函數(shù)設(shè)計與使用一、學(xué)習(xí)目的Python中函數(shù)的定義方法;參數(shù)類型;變量作用域。本章計劃3學(xué)時。二、課程內(nèi)容5.1 函數(shù)定義def 函數(shù)名(參數(shù)列表):注釋函數(shù)體5.2 形參與實(shí)參函數(shù)定義時括弧內(nèi)為形參,一個函數(shù)可以沒有形參,但是括弧必須要有,表示該函數(shù)不接受參數(shù)。函數(shù)調(diào)用時向其傳遞實(shí)參,將實(shí)參的值或引用傳遞給形參。在函數(shù)內(nèi)直接修改形參的值不影響實(shí)參。5.3 參數(shù)類型在Python中,函數(shù)參數(shù)有很多種:可以為普通參數(shù)、默認(rèn)值參數(shù)、關(guān)鍵參數(shù)、可變長度參數(shù)等等。Python函數(shù)的定義非常靈活,在定義函數(shù)時不需要指定參數(shù)的類型,也不需要指定函數(shù)的類型,完全由調(diào)用者決定,類似于重載和泛型;函數(shù)編寫如果有問題,只有在調(diào)用時才能被發(fā)現(xiàn),傳遞某些參數(shù)時執(zhí)行正確,而傳遞另一些類型的參數(shù)時則出現(xiàn)錯誤。l 默認(rèn)值參數(shù)def 函數(shù)名(形參名=默認(rèn)值,) 函數(shù)體默認(rèn)值參數(shù)必須出現(xiàn)在函數(shù)參數(shù)列表的最右端,且任何一個默認(rèn)值參數(shù)右邊不能有非默認(rèn)值參數(shù)。調(diào)用帶有默認(rèn)值參數(shù)的函數(shù)時,可以不對默認(rèn)值參數(shù)進(jìn)行賦值,也可以賦值,具有較大的靈活性。l 關(guān)鍵參數(shù)關(guān)鍵參數(shù)主要指實(shí)參,即調(diào)用函數(shù)時的參數(shù)傳遞方式。通過關(guān)鍵參數(shù)傳遞,實(shí)參順序可以和形參順序不一致,但不影響傳遞結(jié)果,避免了用戶需要牢記位置參數(shù)順序的麻煩。l 可變長度參數(shù)可變長度參數(shù)主要有兩種形式:*parameter和*parameter,前者用來接受多個實(shí)參并將其放在一個元組中,后者接受字典形式的實(shí)參。l 參數(shù)傳遞的序列解包傳遞參數(shù)時,可以通過在實(shí)參序列前加星號將其解包,然后傳遞給多個單變量形參。5.4 return語句return語句用來從一個函數(shù)中返回,即跳出函數(shù),也可用return語句從函數(shù)中返回一個值。如果函數(shù)沒有return語句,Python將認(rèn)為該函數(shù)以return None結(jié)束。5.5 變量作用域變量起作用的范圍稱為變量的作用域。一個變量在函數(shù)外部定義和在函數(shù)內(nèi)部定義,其作用域是不同的。局部變量的引用比全局變量速度快。三、重點(diǎn)、難點(diǎn)提示(一)默認(rèn)值參數(shù),關(guān)鍵參數(shù),可變長度參數(shù),參數(shù)傳遞時的序列解包(二)Lambda表達(dá)式四、思考與練習(xí)編程實(shí)現(xiàn)教材上的示例習(xí)題5.2 / 5.3 / 5.10第六章 面向?qū)ο蟪绦蛟O(shè)計一、學(xué)習(xí)目的Python中類的定義與使用;類的方法;Python2和Python3中的類的屬性。本章計劃3學(xué)時。二、課程內(nèi)容6.1 類的定義與使用l 類定義語法Python使用class關(guān)鍵字來定義類,class關(guān)鍵字之后是一個空格,然后是類的名字,再然后是一個冒號,最后換行并定義類的內(nèi)部實(shí)現(xiàn)。類名的首字母一般要大寫,當(dāng)然您也可以按照自己的習(xí)慣定義類名,但是一般推薦參考慣例來命名,并在整個系統(tǒng)的設(shè)計和實(shí)現(xiàn)中保持風(fēng)格一致,這一點(diǎn)對于團(tuán)隊(duì)合作尤其重要。例如:定義了類之后,可以用來實(shí)例化對象,并通過“對象名.成員”的方式來訪問其中的數(shù)據(jù)成員或成員方法,例如下面的代碼:Python提供了一個關(guān)鍵字“pass”,類似于空語句,可以用在類和函數(shù)的定義中或者選擇結(jié)構(gòu)中。當(dāng)暫時沒有確定如何實(shí)現(xiàn)功能,或者為以后的軟件升級預(yù)留空間,或者其他類型功能時,可以使用該關(guān)鍵字來“占位”。l self參數(shù)類的所有實(shí)例方法都必須至少有一個名為“self”的參數(shù),并且必須是方法的第一個形參(如果有多個形參的話),“self”參數(shù)代表將來要創(chuàng)建的對象本身。在類的實(shí)例方法中訪問實(shí)例屬性時需要以“self”為前綴,但在外部通過對象名調(diào)用對象方法時并不需要傳遞這個參數(shù),如果在外部通過類名調(diào)用對象方法則需要顯式為self參數(shù)傳值。在Python中,在類中定義實(shí)例方法時將第一個參數(shù)定義為“self”只是一個習(xí)慣,而實(shí)際上類的實(shí)例方法中第一個參數(shù)的名字是可以變化的,而不必須使用“self”這個名字。l 類成員與實(shí)例成員這里主要指數(shù)據(jù)成員,或者廣義上的屬性??梢哉f屬性有兩種,一種是實(shí)例屬性,另一種是類屬性。實(shí)例屬性一般是指在構(gòu)造函數(shù)_init_()中定義的,定義和使用時必須以self作為前綴;類屬性是在類中所有方法之外定義的數(shù)據(jù)成員。在主程序中(或類的外部),實(shí)例屬性屬于實(shí)例(對象),只能通過對象名訪問;而類屬性屬于類,可以通過類名或?qū)ο竺L問。在類的方法中可以調(diào)用類本身的其他方法,也可以訪問類屬性以及對象屬性。在Python中比較特殊的是,可以動態(tài)地為類和對象增加成員,這一點(diǎn)是和很多面向?qū)ο蟪绦蛟O(shè)計語言不同的,也是Python動態(tài)類型特點(diǎn)的一種重要體現(xiàn)。l 私有成員與公有成員Python并沒有對私有成員提供嚴(yán)格的訪問保護(hù)機(jī)制。在定義類的屬性時,如果屬性名以兩個下劃線“_”開頭則表示是私有屬性,否則是公有屬性。私有屬性在類的外部不能直接訪問,需要通過調(diào)用對象的公有成員方法來訪問,或者通過Python支持的特殊方式來訪問。Python提供了訪問私有屬性的特殊方式,可用于程序的測試和調(diào)試,對于成員方法也具有同樣的性質(zhì)。私有屬性是為了數(shù)據(jù)封裝和保密而設(shè)的屬性,一般只能在類的成員方法(類的內(nèi)部)中使用訪問,雖然Python支持一種特殊的方式來從外部直接訪問類的私有成員,但是并不推薦您這樣做。公有屬性是可以公開使用的,既可以在類的內(nèi)部進(jìn)行訪問,也可以在外部程序中使用。在Python中,以下劃線開頭的變量名和方法名有特殊的含義,尤其是在類的定義中。用下劃線作為變量名和方法名前綴和后綴來表示類的特殊成員:_xxx:這樣的對象叫做保護(hù)成員,不能用from module import *導(dǎo)入,只有類對象和子類對象能訪問這些成員;_xxx_:系統(tǒng)定義的特殊成員;_xxx:類中的私有成員,只有類對象自己能訪問,子類對象也不能訪問到這個成員,但在對象外部可以通過“對象名._類名_xxx”這樣的特殊方式來訪問。Python中不存在嚴(yán)格意義上的私有成員。6.2 方法在類中定義的方法可以粗略分為四大類:公有方法、私有方法、靜態(tài)方法和類方法。其中,公有方法、私有方法都屬于對象,私有方法的名字以兩個下劃線“_”開始,每個對象都有自己的公有方法和私有方法,在這兩類方法中可以訪問屬于類和對象的成員;公有方法通過對象名直接調(diào)用,私有方法不能通過對象名直接調(diào)用,只能在屬于對象的方法中通過“self”調(diào)用或在外部通過Python支持的特殊方式來調(diào)用。如果通過類名來調(diào)用屬于對象的公有方法,需要顯式為該方法的“self”參數(shù)傳遞一個對象名,用來明確指定訪問哪個對象的數(shù)據(jù)成員。靜態(tài)方法和類方法都可以通過類名和對象名調(diào)用,但不能直接訪問屬于對象的成員,只能訪問屬于類的成員。一般將“cls”作為類方法的第一個參數(shù)名稱,但也可以使用其他的名字作為參數(shù),并且在調(diào)用類方法時不需要為該參數(shù)傳遞值。6.3 屬性Python 2.x和Python 3.x對屬性的實(shí)現(xiàn)和處理方式不一樣,內(nèi)部實(shí)現(xiàn)有較大的差異,使用時應(yīng)注意二者之間的區(qū)別。l Python 2.x中的屬性l Python 3.x中的屬性在Python 3.x中,屬性得到了較為完整的實(shí)現(xiàn),支持更加全面的保護(hù)機(jī)制。例如下面的代碼所示,如果設(shè)置屬性為只讀,則無法修改其值,也無法為對象增加與屬性同名的新成員,同時,也無法刪除對象屬性。6.4 常用特殊方法Python類有大量的特殊方法,其中比較常見的是構(gòu)造函數(shù)和析構(gòu)函數(shù)。Python中類的構(gòu)造函數(shù)是_init_(),一般用來為數(shù)據(jù)成員設(shè)置初值或進(jìn)行其他必要的初始化工作,在創(chuàng)建對象時被自動調(diào)用和執(zhí)行,可以通過為構(gòu)造函數(shù)定義默認(rèn)值參數(shù)來實(shí)現(xiàn)類似于其他語言中構(gòu)造函數(shù)重載的目的。如果用戶沒有設(shè)計構(gòu)造函數(shù),Python將提供一個默認(rèn)的構(gòu)造函數(shù)用來進(jìn)行必要的初始化工作。Python中類的析構(gòu)函數(shù)是_del_(),一般用來釋放對象占用的資源,在Python刪除對象和收回對象空間時被自動調(diào)用和執(zhí)行。如果用戶沒有編寫析構(gòu)函數(shù),Python將提供一個默認(rèn)的析構(gòu)函數(shù)進(jìn)行必要的清理工作。6.5 繼承機(jī)制繼承是為代碼復(fù)用和設(shè)計復(fù)用而設(shè)計的,是面向?qū)ο蟪绦蛟O(shè)計的重要特性之一。當(dāng)我們設(shè)計一個新類時,如果可以繼承一個已有的設(shè)計良好的類然后進(jìn)行二次開發(fā),無疑會大幅度減少開發(fā)工作量。在繼承關(guān)系中,已有的、設(shè)計好的類稱為父類或基類,新設(shè)計的類稱為子類或派生類。派生類可以繼承父類的公有成員,但是不能繼承其私有成員。如果需要在派生類中調(diào)用基類的方法,可以使用內(nèi)置函數(shù)super()或者通過“基類名.方法名()”的方式來實(shí)現(xiàn)這一目的。Python支持多繼承,如果父類中有相同的方法名,而在子類中使用時沒有指定父類名,則Python解釋器將從左向右按順序進(jìn)行搜索。三、重點(diǎn)、難點(diǎn)提示(一)Python對象的可變性(二)屬性的定義與使用四、思考與練習(xí)編程實(shí)現(xiàn)教材上的示例習(xí)題6.1 / 6.2第七章 文件操作一、學(xué)習(xí)目的文本文件的基本操作;二進(jìn)制文件的基本操作;文件操作和目錄操作。本章計劃3學(xué)時。二、課程內(nèi)容7.1 文件基本操作文件對象名=open(文件名, 打開方式, 緩沖區(qū))(1)文件名指定了被打開的文件名稱。(2)打開模式指定了打開文件后的處理方式。(3)緩沖區(qū)指定了讀寫文件的緩存模式。0表示不緩存,1表示緩存,如大于1則表示緩沖區(qū)的大小。默認(rèn)值是緩存模式。(4)open( )函數(shù)返回1個文件對象,該對象可以對文件進(jìn)行各種操作。7.2 文本文件基本操作使用with自動關(guān)閉資源??梢栽诖a塊執(zhí)行完畢后還原進(jìn)入該代碼塊時的現(xiàn)場。不論何種原因跳出with塊,總能保證文件被正確關(guān)閉。7.3 二進(jìn)制文件操作案例精選數(shù)據(jù)庫文件、圖像文件、可執(zhí)行文件、音視頻文件、Office文檔等等均屬于二進(jìn)制文件。對于二進(jìn)制文件,不能使用記事本或其他文本編輯軟件進(jìn)行正常讀寫,也無法通過Python的文件對象直接讀取和理解二進(jìn)制文件的內(nèi)容。必須正確理解二進(jìn)制文件結(jié)構(gòu)和序列化規(guī)則,才能準(zhǔn)確地理解二進(jìn)制文件內(nèi)容并且設(shè)計正確的反序列化規(guī)則。所謂序列化,簡單地說就是把內(nèi)存中的數(shù)據(jù)在不丟失其類型信息的情況下轉(zhuǎn)成對象的二進(jìn)制形式的過程,對象序列化后的形式經(jīng)過正確的反序列化過程應(yīng)該能夠準(zhǔn)確無誤地恢復(fù)為原來的對象。Python中常用的序列化模塊有struct、pickle、json、marshal和shelve,其中pickle有C語言實(shí)現(xiàn)的cPickle,速度約提高1000倍,應(yīng)優(yōu)先考慮使用。l 使用pickle模塊l 使用struct模塊7.4 文件級操作如果僅需要對文件內(nèi)容進(jìn)行讀寫,可以使用7.1節(jié)中介紹的文件對象;如果需要處理文件路徑,可以使用os.path模塊中的對象和方法;如果需要使用命令行讀取文件內(nèi)容可以使用fileinput模塊;創(chuàng)建臨時文件和文件夾可以使用tempfile模塊;另外,Python 3.4的pathlib模塊提供了大量用于表示和處理文件系統(tǒng)路徑的類。l os與os.path模塊l shutil模塊7.5 目錄操作7.6 高級話題l 計算CRC32值(Python 2.7.x)l 計算CRC32值(Python 3.x版本)l 計算文本文件中最長行的長度l 計算MD5值(Python 2.7.x版本)l 判斷一個文件是否為GIF圖像文件l 比較兩個文本文件是否相同l 使用xlwt寫入Excel文件l 使用xlrd讀取Excel文件l 使用Pywin32操作Excel文件l 檢查word文檔的連續(xù)重復(fù)字三、重點(diǎn)、難點(diǎn)提示(一)文件操作三步驟(二)二進(jìn)制文件讀寫方式,序列化模塊pickle與struct(三)遍歷文件夾時遞歸的應(yīng)用四、思考與練習(xí)編程實(shí)現(xiàn)教材上的示例習(xí)題7.1 / 7.2 / 7.5librarian n. 圖書館館長;第八章 異常處理結(jié)構(gòu)與程序調(diào)試一、學(xué)習(xí)目的異常處理的基本概念;Python中的異常處理結(jié)構(gòu)。本章計劃1學(xué)時。二、課程內(nèi)容8.1 什么是異常語法錯誤和邏輯錯誤不屬于異常,但有些語法錯誤往往會導(dǎo)致異常,例如由于大小寫拼寫錯誤而訪問不存在的對象。當(dāng)Python檢測到一個錯誤時,解釋器就會指出當(dāng)前流已無法繼續(xù)執(zhí)行下去,這時候就出現(xiàn)了異常。異常是指因?yàn)槌绦虺鲥e而在正常控制流以外采取的行為。異常分為兩個階段:第一個階段是引起異常發(fā)生的錯誤;第二個階段是檢測并處理階段。不建議使用異常來代替常規(guī)的檢查,如if.else判斷。應(yīng)避免過多依賴于異常處理機(jī)制。當(dāng)程序出現(xiàn)錯誤,python會自動引發(fā)異常,也可以通過raise顯式地引發(fā)異常。8.2 Python中的異常類BaseException +- SystemExit +- KeyboardInterrupt +- GeneratorExit +- Exception +- StopIteration +- ArithmeticError | +- FloatingPointError | +- OverflowError | +- ZeroDivisionError +- AssertionError +- AttributeError +- BufferError +- EOFError +- ImportError +- LookupError | +- IndexError | +- KeyError +- MemoryError +- NameError | +- UnboundLocalError +- OSError | +- BlockingIOError | +- ChildProcessError | +- ConnectionError | | +- BrokenPipeError | | +- ConnectionAbortedError | | +- ConnectionRefusedError | | +- ConnectionResetError | +- FileExistsError | +- FileNotFoundError | +- InterruptedError | +- IsADirectoryError | +- NotADirectoryError | +- PermissionError | +- ProcessLookupError | +- TimeoutError +- ReferenceError +- RuntimeError | +- NotImplementedError +- SyntaxError | +- IndentationError | +- TabError +- SystemError +- TypeError +- ValueError | +- UnicodeError | +- UnicodeDecodeError | +- UnicodeEncodeError | +- UnicodeTranslateError +- Warning +- DeprecationWarning +- PendingDeprecationWarning +- RuntimeWarning +- SyntaxWarning +- UserWarning +- FutureWarning +- ImportWarning +- UnicodeWarning +- BytesWarning +- ResourceWarning*可以繼承Python內(nèi)置異常類來實(shí)現(xiàn)自定義的異常類。8.3 try.except.else結(jié)構(gòu)try子句中的代碼塊放置可能出現(xiàn)異常的語句,except子句中的代碼塊處理異常。如果try范圍內(nèi)捕獲了異常,就執(zhí)行except塊;如果try范圍內(nèi)沒有捕獲異常,就執(zhí)行else塊。8.4 斷言與上下文管理斷言與上下文管理是兩種比較特殊的異常處理方式,在形式上比異常處理結(jié)構(gòu)要簡單一些。8.4.1 斷言斷言語句的語法是: assert expression, reason 當(dāng)判斷表達(dá)式expression為真時,什么都不做;如果表達(dá)式為假,則拋出異常。 assert語句一般用于開發(fā)程序時對特定必須滿足的條件進(jìn)行驗(yàn)證,僅當(dāng)_debug_為True時有效。當(dāng)Python腳本以-O選項(xiàng)編譯為字節(jié)碼文件時,assert語句將被移除以提高運(yùn)行速度。8.4.2 上下文管理使用with自動關(guān)閉資源,可以在代碼塊執(zhí)行完畢后還原進(jìn)入該代碼塊時的現(xiàn)場。不論何種原因跳出with塊,不論是否發(fā)生異常,總能保證文件被正確關(guān)閉,資源被正確釋放。with語句的語法如下:with context_expr as var:with塊 三、重點(diǎn)、難點(diǎn)提示(一)異常的概念與表現(xiàn)形式(二)常見異常處理結(jié)構(gòu)(三)使用IDLE調(diào)試代碼四、思考與練習(xí)編程實(shí)現(xiàn)教材上的示例第九章 GUI編程一、學(xué)習(xí)目的Python中GUI編程的基本方法;GUI中的常見組件。本章計劃2學(xué)時。二、課程內(nèi)容建立GUI程序的三大步驟:1)導(dǎo)入必需的wxPython包或其他包2)建立框架類:框架類的父類為wx.Frame,在框架類的構(gòu)造函數(shù)中必須調(diào)用父類的構(gòu)造函數(shù)。3)建立主程序:通常做4件事建立應(yīng)用程序?qū)ο?、建立框架類對象、顯示框架、建立事件循環(huán)-執(zhí)行frame.Show(True)后,框架才看得見-執(zhí)行app.MainLoop( )后,框架才能處理事件。如需在窗體上增加其他控件,可在構(gòu)造函數(shù)中增加代碼如需處理事件,可增加框架類的成員函數(shù)。9.1 FrameFrame:框架(窗體),容器,可移動、縮放,包含標(biāo)題欄、菜單等。是所有框架的父類。wxPython的ID參數(shù):可以明確給構(gòu)造函數(shù)傳遞一個正整數(shù),由程序員自行保證ID不重復(fù)并且沒有重用預(yù)定義的ID號,如wx.ID_OK、wx.ID_CANCEL等ID號對應(yīng)的數(shù)值;9.2 Controls如需在窗體上增加其他控件,可在構(gòu)造函數(shù)中增加代碼。如需處理事件,可增加框架類的成員函數(shù)。常用的控件主要有按鈕、靜態(tài)文本標(biāo)簽、文本框、單選鈕、復(fù)選框、對話框、菜單等等l Button、StaticText、TextCtrll Menul ToolBar、StatusBarl 對話框l RadioButton、CheckBoxl RadioButton、CheckBoxl ComboBoxl ListBoxl TreeCtrl三、重點(diǎn)、難點(diǎn)提示(一)wxPython基礎(chǔ)知識(二)各類GUI控件的使用四、思考與練習(xí)編程實(shí)現(xiàn)教材上的示例習(xí)題9.1 / 9.2第十章 網(wǎng)絡(luò)程序設(shè)計一、學(xué)習(xí)目的UDP和TCP編程;網(wǎng)頁內(nèi)容的讀?。皇褂肞ython開發(fā)網(wǎng)站的基本方法。本章計劃2學(xué)時。二、課程內(nèi)容Socket對象是網(wǎng)絡(luò)通信的基礎(chǔ),相當(dāng)于在發(fā)送端和接收端之間建立了一個管道來實(shí)現(xiàn)相互傳遞數(shù)據(jù)。Python對Socket進(jìn)行了二次封裝,簡化了程序的開發(fā)步驟,提高了開發(fā)效率。Python提供了socket模塊,提供了socket接口的訪問。Python還提供了大量模塊可以對網(wǎng)頁內(nèi)容進(jìn)行抓取和處理。10.1 計算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識l 網(wǎng)絡(luò)體系結(jié)構(gòu),分層設(shè)計的好處l ftp、http、smtp、pop3、telnetl TCP、UDP、端口號l IP地址l MAC地址10.2 UDP和TCP編程l UDP協(xié)議編程socket(family,type,proto)創(chuàng)建一個socket對象,其中family為socket.AF_INET表示IPV4,socket.AF_INET6表示IPV6;type為SOCK_STREAM表示TCP協(xié)議,SOCK_DGRAM表示UDP協(xié)議。sendto(string,address)把string指定的內(nèi)容發(fā)送給address指定的地址,address是一個元組,格式為(IP地址,端口號)recvfrom(bufsize,flags) 接收數(shù)據(jù)l TCP編程connect(address)連接遠(yuǎn)程計算機(jī)send(bytes,flags) 發(fā)送數(shù)據(jù)recv(bufsize,flags)接收數(shù)據(jù)bind(address)綁定地址listen(backlog)開始監(jiān)聽,等待客戶端連接accept() 響應(yīng)客戶端的請求10.3 簡單嗅探器實(shí)現(xiàn)10.4 網(wǎng)頁內(nèi)容讀取在Python2中提供了urllib和urllib2兩個模塊用來讀取網(wǎng)頁內(nèi)容,在Python3中重新進(jìn)行了整合,只提供urllib一個模塊。Python2中的urllib模塊在Python3中被分成了urllib.request, urllib.parse和urllib.error三部分,目前只支持HTTP, (versions 0.9 and 1.0), FTP和local files三種協(xié)議。urllib2模塊在Python3中被合并到urllib.request和urllib.error中去了。10.5 使用Python開發(fā)網(wǎng)站Python是一門腳本語言,完全可以像PHP、VBScript等腳本語言一樣用來開發(fā)網(wǎng)頁以及CGI程序。既可以直接編寫Python腳本程序來生成網(wǎng)頁,也可以把Python程序嵌入“.asp”文件,無論使用哪種方式,都可以使用服務(wù)器上已安裝的所有Python擴(kuò)展模塊,同時也要遵守縮進(jìn)以及

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論