機(jī)器視覺原理與應(yīng)用 課件 第3章 機(jī)器視覺編程基礎(chǔ)_第1頁
機(jī)器視覺原理與應(yīng)用 課件 第3章 機(jī)器視覺編程基礎(chǔ)_第2頁
機(jī)器視覺原理與應(yīng)用 課件 第3章 機(jī)器視覺編程基礎(chǔ)_第3頁
機(jī)器視覺原理與應(yīng)用 課件 第3章 機(jī)器視覺編程基礎(chǔ)_第4頁
機(jī)器視覺原理與應(yīng)用 課件 第3章 機(jī)器視覺編程基礎(chǔ)_第5頁
已閱讀5頁,還剩62頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第3章機(jī)器視覺編程基礎(chǔ)3.1Python安裝及環(huán)境搭建 3.1.1安裝Python 3.1.2安裝PyCharmCommunity 3.1.3PyCharm初始化

3.1.4在Prompt中安裝OpenCV庫函數(shù)3.2Python編譯器3.3Python數(shù)據(jù)類型 3.3.1數(shù)值類型 3.3.2字符串類型 3.3.3布爾類型3.4變量與常量第3章機(jī)器視覺編程基礎(chǔ)3.5運(yùn)算符 3.5.1運(yùn)算符簡介 3.5.2字符串類型3.6選擇與循環(huán) 3.6.1if語句 3.6.2while循環(huán) 3.6.3for循環(huán) 3.6.4break和continue語句3.7列表與元組 3.7.1序列索引 3.7.2序列切片

第3章機(jī)器視覺編程基礎(chǔ) 3.7.3創(chuàng)建 3.7.4查詢 3.7.5修改 3.7.6刪除3.8Numpy數(shù)組 3.8.1Numpy.array 3.8.2創(chuàng)建Numpy數(shù)組 3.8.3Numpy數(shù)組切片3.9字典 3.9.1字典的創(chuàng)建 3.9.2字典的常規(guī)操作

第3章機(jī)器視覺編程基礎(chǔ) 3.9.3字典的遍歷3.10函數(shù) 3.10.1函數(shù)的定義與調(diào)用 3.10.2參數(shù)傳遞3.11面向?qū)ο蟮木幊?3.11.1類與對(duì)象

3.11.2繼承與多態(tài)3.12Python調(diào)用MATLAB程序

3.1Pyhton安裝及環(huán)境搭建Anaconda官網(wǎng)

/products/individualPyCharm官網(wǎng)

/pycharm/download/#section=windowsPyCharm初始化

創(chuàng)建一個(gè)新的工程在Interpreter目錄中選擇CondaEnvironment,在Interpreter右側(cè)目錄中選擇Python.exe,此文件Python.exe在已安裝好的Anaconda目錄下,點(diǎn)擊OK完成配置安裝OpenCV庫

選擇Anaconda3下的AnacondaPrompt,在窗口中輸入pipinstall-i/simpleopencv-python==53.2Pyhton編譯器Python是一種跨平臺(tái)的計(jì)算機(jī)程序語言是我們進(jìn)行項(xiàng)目開發(fā)而使用的一門計(jì)算機(jī)語言,通俗來說就是編寫代碼,編寫完代碼之后,我們就需要運(yùn)行,這時(shí)我們需要運(yùn)行Python代碼的運(yùn)行環(huán)境和工具Anaconda是一個(gè)開源的Python發(fā)行版本,其包含了conda、Python等180多個(gè)科學(xué)包及其依賴項(xiàng),Conda是一個(gè)開源的包、環(huán)境管理器,可以用于在同一個(gè)機(jī)器上安裝不同版本的軟件包及其依賴,并能夠在不同的環(huán)境之間切換PyCharm是一種常用的PythonIDE,該IDE提供了一些高級(jí)功能,以用于支持Django框架下的專業(yè)Web開發(fā),界面編寫代碼和運(yùn)行操作更加簡單3.2Pyhton編譯器我們使用以下四種方式來運(yùn)行Python代碼,前提是已經(jīng)下載好了Python解釋器,下載后配置好其系統(tǒng)環(huán)境變量,解釋器的作用就是將Python代碼解釋成機(jī)器可以識(shí)別并執(zhí)行的語言1.在命令窗口中運(yùn)行快捷鍵Win+R—>輸入cmd到命令窗口—>窗口內(nèi)輸入python3.2Pyhton編譯器2.腳本方式運(yùn)行新建一個(gè)A.txt腳本文件,寫完腳本之后,然后把名稱后綴命名為.py,到命令窗口找到相應(yīng)的文件目錄,然后執(zhí)行代碼pythonA.py3.2Pyhton編譯器3.使用Python自帶的IDLE編輯器IDLE是Python原生自帶的開發(fā)環(huán)境,是迷你版的IDE,與以上方式不同的是它帶有圖形界面,有簡單的編輯和調(diào)試功能,但是操作起來比較麻煩。使用方式Win+R—>輸入IDLE3.2Pyhton編譯器4.使用第三方Python的IDE編輯器使用第三方Python的IDE相對(duì)于Python自帶的IDLE而言,功能更加全面,界面更加美觀,操作起來更加容易。目前比較流行的有PyCharm、Vscode、Jupyter等,本文推薦廣泛使用的Pycharm3.3.1數(shù)值類型數(shù)值類型一般用來存儲(chǔ)程序中的數(shù)值。Python支持三種不同的數(shù)值類型,分別是整型(int)、浮點(diǎn)型(float)和復(fù)數(shù)型(complex)1.整型整型就是我們常說的整數(shù),沒有小數(shù)點(diǎn),但是可以有正負(fù)號(hào)。在Python中,可以對(duì)整型數(shù)據(jù)進(jìn)行(+)、減(-)、乘(*)、除(/)和乘方(**)的操作另外,Python中還支持運(yùn)算次序,可以在同一個(gè)表達(dá)式中使用多種運(yùn)算,還可以使用括號(hào)來修改運(yùn)算次序3.3.1數(shù)值類型2.浮點(diǎn)型Python將帶小數(shù)點(diǎn)的數(shù)字都稱為浮點(diǎn)數(shù)。大多數(shù)編程語言都使用這個(gè)術(shù)語,它可以用來表示一個(gè)實(shí)數(shù),通常分為十進(jìn)制小數(shù)形式(如5.32)和指數(shù)形式.指數(shù)形式的浮點(diǎn)數(shù)用字母e或者(E)來表示以10為底的小數(shù),e之前為整數(shù)部分,之后為指數(shù)部分,而且兩部分必須同時(shí)存在3.復(fù)數(shù)型在科學(xué)計(jì)算中經(jīng)常會(huì)遇到復(fù)數(shù)型的數(shù)據(jù),鑒于此,Python提供了運(yùn)算方便的復(fù)數(shù)類型。對(duì)于復(fù)數(shù)類型的數(shù)據(jù),一般的形式是a+bj,其中a為實(shí)部,b為虛部,j為虛數(shù)單位

3.3.2字符串類型在Python中可以使用單引號(hào)、雙引號(hào)、三引號(hào)來定義字符串,使用單引號(hào)或者雙引號(hào)表示的字符串必須在同一行表示,而三引號(hào)表示的字符串可以多行表示,這種情況用于注釋:>>>str3="""helloPtyhon!""">>>print(str3)HelloPython!在Python中不可以對(duì)已經(jīng)定義的字符串進(jìn)行修改,只能重新定義字符串運(yùn)行結(jié)果3.3.3布爾類型

布爾(bool)類型的數(shù)據(jù)用于描述邏輯運(yùn)算的結(jié)果,只有真(True)和假(False)兩種值,在Python中一般用在程序中表示條件,滿足為True,不滿足為False3.4變量與常量計(jì)算機(jī)中的變量類似于一個(gè)存儲(chǔ)東西的盒子,在定義一個(gè)變量后,可以將程序中表達(dá)式所計(jì)算的值放入該盒子中,即將其保存到一個(gè)變量中。在程序運(yùn)行過程中不能改變的數(shù)據(jù)對(duì)象稱為常量在Python中使用變量要遵循一定的規(guī)則,基本規(guī)則如下:(1)變量名只包含字母、數(shù)字和下劃線。變量名可以以字母或下劃線開頭,但不能以數(shù)字開頭。例如,可將變量命名為singal_2,但不能將其命名為2_singal。(2)變量名不包含空格,但可使用下劃線來分隔其中的單詞。例如,變量名open_cl可行,但變量名opencl會(huì)引發(fā)錯(cuò)誤。(3)變量名應(yīng)既簡短又具有描述性。(4)不要將Python關(guān)鍵字和函數(shù)名用作變量名。例如,break、i、for等關(guān)鍵字不能用作變量名3.5.1運(yùn)算符簡介

Python中,如正負(fù)號(hào)運(yùn)算符“+”和“-”接受一個(gè)操作數(shù)、可以將其稱為一元運(yùn)算符。而接受兩個(gè)操作數(shù)的運(yùn)算符可以稱為二元運(yùn)算符,如“*”“/”等。如果在計(jì)算過程中包含多個(gè)運(yùn)算符,其計(jì)算的順序需要根據(jù)運(yùn)算符的結(jié)合順序和優(yōu)先級(jí)而定。優(yōu)先級(jí)高的先運(yùn)算,同級(jí)的按照結(jié)合順序從左到右依次計(jì)算3.5.2運(yùn)算符優(yōu)先級(jí)按優(yōu)先順序排列:運(yùn)算符描述Or布爾“或”And布爾“與”Not布爾“非”in,notin成員測試is,isnot同一性測試<,<=,>,>=,!=,==比較|按位或^按位異或&按位與<<,>>移位+,-加法與減法*,/,%,//乘法,除法,取余,整數(shù)除法~x按位反轉(zhuǎn)**指數(shù)/冪3.6選擇與循環(huán)選擇結(jié)構(gòu)(根據(jù)程序執(zhí)行路線不同)循環(huán)結(jié)構(gòu)也是類似,需要有循環(huán)的條件和循環(huán)所執(zhí)行的程序(即循環(huán)體)單分支雙分支多分支3.6.1if語句

if語句的子句即if語句在條件成立時(shí)所要執(zhí)行的程序,它將在語句的條件為True時(shí)執(zhí)行。如果條件為False,那么將跳過子句。if單分支結(jié)構(gòu)一般的格式為:if表達(dá)式(條件):語句塊(子句)單分支if語句執(zhí)行過程3.6.1if語句if雙分支結(jié)構(gòu)if子句后有時(shí)也可以跟else語句。只有if語句的條件為False時(shí),else子句才會(huì)執(zhí)行if語句同樣可以實(shí)現(xiàn)雙分支結(jié)構(gòu),其一般格式為:

if表達(dá)式(條件):語句塊1(1f子句)else;語句塊2(else子句)單分支if語句執(zhí)行過程3.6.1if語句if多分支結(jié)構(gòu)雖然只有if或else子句會(huì)被執(zhí)行,但當(dāng)希望有更多可能的子句中有一個(gè)被執(zhí)行時(shí),elif語句就派上用場了。elif語句是“否則如果”,總是跟在if或另一條elif語句后面。它提供了另一個(gè)條件,僅在前面的條件為False時(shí)才檢查該條件。3.6.1if語句

if語句也可以實(shí)現(xiàn)多分支結(jié)構(gòu),它的一般格式為:if表達(dá)式1(條件1):語句塊1elif表達(dá)式2(條件2):語句塊2elif表達(dá)式3(條件3):語句塊3……elif表達(dá)式m(條件m):語句塊m[else:語句塊n]多分支if語句執(zhí)行過程3.6.2while循環(huán)

while循環(huán)結(jié)構(gòu)是通過判斷循環(huán)條件是否成立來決定是否要繼續(xù)進(jìn)行循環(huán)的一種循環(huán)結(jié)構(gòu),它可以先判斷循環(huán)的條件是否為True,若為True則繼續(xù)進(jìn)行循環(huán),若為False,則退出循環(huán)。while語句基本格式在Python中,while語句的一般格式為:while表達(dá)式(循環(huán)條件):語句塊 while循環(huán)語句執(zhí)行過程3.6.2while循環(huán)while語句中的else語句在Python中可以在while語句之后使用else語句。在while。運(yùn)向的循環(huán)體正常循環(huán)結(jié)束退出循環(huán)后會(huì)執(zhí)行else語句的子句,但是當(dāng)循環(huán)用break語句退出時(shí),else語句的子句則不會(huì)被執(zhí)行。3.6.3for循環(huán)當(dāng)想要在程序中實(shí)現(xiàn)計(jì)數(shù)循環(huán)時(shí),一般會(huì)采用for循環(huán)。在Python中,for循環(huán)是一個(gè)通用的序列迭代器,可以遍歷任何有序序列對(duì)象中的元素。for循環(huán)的格式for循環(huán)的一般格式為:for目標(biāo)變量in序列對(duì)象:語句塊for循環(huán)首先將序列中的元素依次賦給目標(biāo)變量,每賦值一次都要執(zhí)行一次循環(huán)體的代碼。for循環(huán)執(zhí)行結(jié)構(gòu)3.6.3for循環(huán)range在for循環(huán)中的應(yīng)用for循環(huán)經(jīng)常和range聯(lián)用。range是Python3.x內(nèi)部定義的一個(gè)迭代器對(duì)象,可以幫助for語句定義迭代對(duì)象的范圍。其基本格式為:range(start,stopl,[step])range的返回值從start開始,以step為步長,到stop結(jié)束,step為可選參數(shù),默認(rèn)為1。3.6.4break和continue語句break語句和continue語句都是循環(huán)控制語句,可以改變循環(huán)的執(zhí)行路徑。break語句break語句多用于for、while循環(huán)的循環(huán)體,作用是提前結(jié)束循環(huán),即跳出循環(huán)體。當(dāng)多個(gè)循環(huán)嵌套時(shí),break只是跳出最近的一層循環(huán)。continue語句continue語句類似于break語句,必須在for和while循環(huán)中使用。但是,與break語句不同的是,continue語句僅僅跳出本次循環(huán),返回到循環(huán)條件判斷處,并且根據(jù)判斷條件來確定是否繼續(xù)執(zhí)行循環(huán)。3.7列表和元組在數(shù)學(xué)里,序列也稱為數(shù)列,是指按照一定順序排列的一列數(shù),在程序設(shè)計(jì)中,序列是一種常用的數(shù)據(jù)存儲(chǔ)方式Python中內(nèi)置了5個(gè)常用的序列結(jié)構(gòu),分別是列表、元組、集合、字典和字符串在Python中,列表和元組這兩種序列可以存儲(chǔ)不同類型的元素。不同之處:列表的值是可以改變的,而元組的值是不可變的。3.7.1序列索引序列結(jié)構(gòu)遵循序列索引。序列中的每一個(gè)元素都有一個(gè)編號(hào),稱為索引。正數(shù)索引:從左往右計(jì)數(shù),第一個(gè)索引值是0負(fù)數(shù)索引:從右向左計(jì)數(shù),最后一個(gè)元素的索引值是-13.7.2序列切片切片操作是訪問序列中元素的另一種方法,它可以訪問一定范圍內(nèi)的元素。通過切片操作可以生成一個(gè)新的序列。實(shí)現(xiàn)切片操作的語法格式如下:qiepian[start:end:step]參數(shù)說明:

qiepian:表示序列的名稱;

start:表示切片的開始位置(包括該位置),如果不指定,則默認(rèn)為0;

end:表示切片的截止位置(不包括該位置),如果不指定,則默認(rèn)為序列的長度;

step:表示切片的步長,如果省略,則默認(rèn)為1,當(dāng)省略該步長時(shí),最后一個(gè)冒號(hào)也可以省略。3.7.3創(chuàng)建列表的創(chuàng)建方法一:列表的創(chuàng)建采用在方括號(hào)中用逗號(hào)分隔的定義方式,基本形式如下:

方法二:列表也可以通過list對(duì)象來創(chuàng)建,基本形式如下:list()#創(chuàng)建一個(gè)空列表list(iterable)#創(chuàng)建一個(gè)空列表,iterable為列舉對(duì)象元素3.7.3創(chuàng)建元組的創(chuàng)建采用括號(hào)中逗號(hào)分隔的定義方式,其中,圓括號(hào)可以省略?;拘问饺缦拢?/p>

或者為:注意當(dāng)元組中只有一個(gè)項(xiàng)目時(shí),其后面的逗號(hào)可以省略,否則,Python解釋器會(huì)把(x1)當(dāng)做x1元組也可以通過tuple對(duì)象來創(chuàng)建,基本形式如下:tuple()#創(chuàng)建一個(gè)空元組tuple(iterable)#創(chuàng)建一個(gè)空元組,iterable為列舉對(duì)象元素3.7.4查詢列表和元組都支持查詢(訪問)其中的元素。在Python中,序列的每一個(gè)元素被分配一個(gè)位置編號(hào),稱為索引(index)。第一個(gè)元素的索引是0,序列中的元素都可以通過索引進(jìn)行訪問。一般格式為:

序列名[索引]列表與元組的正向索引查詢:list_1=[1,2,3]print(list_1[1])tuple_1=((1,2,3))print(tuple_1[0])運(yùn)行結(jié)果為:3.7.4查詢另外,Python序列還支持反向索引(負(fù)數(shù)索引)。這種索引方式可以從最后一個(gè)元素開始計(jì)數(shù),即倒數(shù)第一個(gè)元素的索引是-1。這種方法可以在不知道序列長度的情況下訪問序列最后面的元素。列表與元組的反向索引查詢:list_1=[1,2,3]print(list_1[-1])tuple_1=((1,2,3))print(tuple_1[-2])運(yùn)行結(jié)果為:運(yùn)行結(jié)果為:3.7.5修改對(duì)于修改操作,由于元組的不可變性,元組的數(shù)據(jù)不可以被改變,除非將其改為列表類型。對(duì)于列表來說,要修改其中某一個(gè)值,可以采用索引的方式,這種操作也叫作賦值。

例如: list_1=[1,2,3] list_1[1]=9 print(list_1)

運(yùn)行結(jié)果為:3.7.5修改append函數(shù)的作用是在列表末尾添加一個(gè)元素extend函數(shù)用于將一個(gè)列表添加到另一個(gè)列表的尾部由于元組的不可變性,我們不能改變元組的元素,但是可以將元組轉(zhuǎn)換為列表進(jìn)行修改,例如:tuple_1=[1,2,3]list_1=list(tuple_1)#元祖轉(zhuǎn)列表list_1[1]=8tuple_1=tuple(list_1)#列表轉(zhuǎn)元祖print(tuple_1)運(yùn)行結(jié)果為:3.7.5修改方法解釋說明s.append(x)把對(duì)象x追加到列表s的尾部s.clear()刪除所有元素s.copy()復(fù)制列表s.extend(t)把序列t附加到列表s的尾部s.insert(i,x)在下標(biāo)i的位置插入對(duì)象xs.pop([i])返回并移除下標(biāo)i位置的對(duì)象,省略i時(shí)為最后的對(duì)象s.remove(x)移除列表中第一個(gè)出現(xiàn)的xs.remove()列表反轉(zhuǎn)s.sort()列表排序,默認(rèn)為升序列表對(duì)象的主要操作方法3.7.6刪除元素的刪除操作也只適用于列表,而不適用于元組,同樣,將元組轉(zhuǎn)換為列表就可以進(jìn)行刪除操作。從列表中刪除元素很容易,可以使用del、clear、remove等操作del不僅可以刪除某個(gè)元素,還可以刪除對(duì)象clear會(huì)刪除列表中所有的元素remove(x)操作會(huì)將列表中出現(xiàn)的第一個(gè)x刪除3.8Numpy數(shù)組Numpy是Python編程語言的擴(kuò)展,它增加了對(duì)大型多維數(shù)組和矩陣的支持,以及對(duì)這些數(shù)組進(jìn)行操作的大型高級(jí)數(shù)學(xué)函數(shù)庫的支持。在Numpy中,數(shù)組的類型為ndarray(n維數(shù)組),所有元素必須具有相同的類型3.8.1Numpy.array在OpenCV中,很多PythonAPI是基于NumPy的,Numpy是Python的一種開源數(shù)值計(jì)算擴(kuò)展,用來處理多維數(shù)組。例1:使用Numpy生成一個(gè)灰度圖像,其中的像素均為隨機(jī)數(shù)。importcv2ascvimportnumpyasnppicturegray=np.random.randint(0,256,size=[256,256],dtype=np.uint8)cv.imshow("picturegray",picturegray)cv.waitKey()cv.destroyAllWindows()3.8.1Numpy.array例2:使用Numpy生成一個(gè)彩色圖像,其中的像素均為隨機(jī)數(shù)。importcv2ascvimportnumpyasnppicturecolor=np.random.randint(0,256,size=[256,256,3],dtype=np.uint8)cv.imshow("picturecolor",picturecolor)cv.waitKey()cv.destroyAllWindows()3.8.2創(chuàng)建Numpy數(shù)組使用numpy中的函數(shù)構(gòu)建數(shù)組使用arange()函數(shù)構(gòu)建數(shù)組importnumpyasnpa1=np.arange(12) #產(chǎn)生0到11一維數(shù)組print(a1) #[01234567891011]print(a1.shape) #(12,)使用zeros()函數(shù)創(chuàng)建一個(gè)特定大小、全部填充為0的數(shù)組importnumpyasnpa2=np.zeros(9) #產(chǎn)生全是0的一維數(shù)組print(a2) #[000000000]print(a2.shape) #(9,)3.8.2創(chuàng)建Numpy數(shù)組2從Python列表中創(chuàng)建數(shù)組importnumpyasnplist1=[2,6,7,8,1]b1=np.array(list1)print(b1)#[2,6,7,8,1]print(b1.shape)#(5,)3.8.3Numpy數(shù)組切片在Python中,可以使用像m:n這樣的表達(dá)式來選擇一系列元素,選擇的是以m開頭并以n-1結(jié)尾的元素(注意不包括第n個(gè)元素)。切片m:n也可以更明確地寫為m:n:1,其中數(shù)字1表示應(yīng)該選擇m和n之間的每個(gè)元素。要從m和n之間每兩個(gè)元素選擇一個(gè),請使用m:n:2,p個(gè)元素,則使用m:n:p一維數(shù)組(冒號(hào):),通過冒號(hào)分隔切片參數(shù)start:stop:step來進(jìn)行切片操作。一個(gè)參數(shù):a[i] 返回與該索引相對(duì)應(yīng)的單個(gè)元素兩個(gè)參數(shù):b=a[i:j] 表示復(fù)制a[i]到a[j-1],以生成新的list對(duì)象三個(gè)參數(shù):b=a[i:j:s] 三個(gè)參數(shù)時(shí),i、j、s為索引,通過冒號(hào)分隔切片參數(shù)start:stop:step來進(jìn)行切片操作3.9.1字典的創(chuàng)建字典就是用大括號(hào)括起來的“關(guān)鍵字:值”對(duì)的集合體,每一個(gè)“關(guān)鍵字:值”對(duì)被稱為字典的一個(gè)元素。創(chuàng)建字典的一般格式為:字典名={[關(guān)鍵字1:值1[,關(guān)鍵字2:值2,……,關(guān)鍵字n:值n]]}其中,關(guān)鍵字與值之間用“:”分隔,元素與元素之間用逗號(hào)分隔。字典中關(guān)鍵字必須是唯一的,值可以不唯一。字典的元素是列表、元祖和字典另外,在Python中還有一種創(chuàng)建字典的方法,即dict函數(shù)法3.9.2字典的常規(guī)操作訪問在Python中可以通過關(guān)鍵字進(jìn)行訪問,一般格式為:字典[關(guān)鍵字]例如:

運(yùn)行結(jié)果為:dict_1={'name':'LiHua','score':95}print(dict_1['score'])3.9.2字典的常規(guī)操作更新在Python中更新字典的格式一般為:字典名[關(guān)鍵字]=值如果在字典中已經(jīng)存在該關(guān)鍵字,則修改它;如果不存在,則向字典中添加一個(gè)這樣的新元素。

dict_2={'name':'LiHua','score':95}dict_2['score']=80 運(yùn)行結(jié)果為:print(dict_2)dict_2['agr']=19print(dict_2)3.9.2字典的常規(guī)操作刪除在Python中刪除字典有很多種方法,這里介紹del和clear方法。del方法的一般格式如下:del字典名[關(guān)鍵字] #刪除關(guān)鍵字對(duì)應(yīng)的元素del字典真名 #刪除整個(gè)字典字典的刪除如下所示:dict_3={'name':'LiHua','score':95,'age':19}deldict_3['score']print(dict_3)dict_3.clear()print(dict_3)運(yùn)行結(jié)果為:3.9.2字典的常規(guī)操作方法說明d.copy()字典復(fù)制,返回d的副本d.clear()字典刪除,清空字典d.pop(key)從字典d中刪除關(guān)鍵字key并返回刪除的值d.popitem()刪除字典的“關(guān)鍵字:值”對(duì),并返回關(guān)鍵字和值構(gòu)成的元祖d.fromkeys()創(chuàng)建并返回一個(gè)新字典d.keys()返回一個(gè)包含字典所有關(guān)鍵字的列表d.values()返回一個(gè)包含字典所有值的列表d.items()返回一個(gè)包含字典所有“關(guān)鍵字:值”對(duì)的列表len()計(jì)算字典中所有“關(guān)鍵字:值”對(duì)的數(shù)目字典的其他操作方法3.9.3字典的遍歷對(duì)字典進(jìn)行遍歷一般會(huì)使用for循環(huán),但建議在訪問之前使用in或notin判斷字典的關(guān)鍵字是否存在。字典的遍歷操作如下所示。dict_4={'name':'LiHua','score':95,}forkeyindict_4.keys():print(key,dict_4[key]) forvalueindict_4.values(): print(value) foritemindict_4.items():print(item) 運(yùn)行結(jié)果為:3.10.1函數(shù)的定義和調(diào)用函數(shù)是帶有名字的代碼塊,用于完成具體的任務(wù)在Python中,函數(shù)是一種運(yùn)算或處理過程,即將一個(gè)程序段完成的運(yùn)算或處理過程放在一個(gè)自定義函數(shù)中完成。這種操作首先要定義一個(gè)函數(shù),然后可以根據(jù)實(shí)際需要多次調(diào)用它,而不用再次編寫,大大減少了工作量。函數(shù)的定義

Python函數(shù)定義的一般格式為:def函數(shù)名([形式參數(shù)]):

函數(shù)體3.10.1函數(shù)的定義和調(diào)用有了函數(shù)的定義,在之后的編程中,只要用到該函數(shù)都可以直接調(diào)用它。調(diào)用函數(shù)的一般格式為:函數(shù)名(實(shí)際參數(shù)表)如果定義的函數(shù)有形式參數(shù),那么可以在調(diào)用函數(shù)時(shí)傳入實(shí)際參數(shù),當(dāng)然,如果沒有,可以不傳,只保留一個(gè)空括號(hào)。但需要注意的是,無論有沒有參數(shù)的傳遞,函數(shù)名后的括號(hào)都不可以省略。3.10.1函數(shù)的定義和調(diào)用例:根據(jù)海倫公式計(jì)算三角形的面積。importmathdefangle_area(a,b,c):#定義一個(gè)angle_area函數(shù)

p=(a+b+c)/2s=math.sqrt(p*(p-a)*(p-b)*(p-c))#利用海倫公式計(jì)算三角形面積

returnsarea_s=angle_area(3,4,5)#調(diào)用angle_area函數(shù)print("三角形面積為:",area_s)運(yùn)行結(jié)果3.10.2參數(shù)傳遞在調(diào)用函數(shù)時(shí),Python必須將函數(shù)調(diào)用中的每個(gè)實(shí)參都關(guān)聯(lián)到函數(shù)定義中的一個(gè)形參。因此,最簡單的關(guān)聯(lián)方式是基于實(shí)參的順序,這種關(guān)聯(lián)方式稱為位置實(shí)參位置實(shí)參演示defperson(name_n,sex_o):#定義一個(gè)person函數(shù)

print("Mynameis",name_n)print("Iama",sex_o)person('LiHua','man')#調(diào)用函數(shù)程序運(yùn)行結(jié)果在函數(shù)中,可根據(jù)需要使用任意數(shù)量的位置實(shí)參,Python將按順序?qū)⒑瘮?shù)調(diào)用中的實(shí)參關(guān)聯(lián)到函數(shù)定義中相應(yīng)的形參3.10.2參數(shù)傳遞關(guān)鍵字參數(shù)是傳遞給函數(shù)的名稱。由于直接在實(shí)參中將名稱和值關(guān)聯(lián)起來,因此向函數(shù)傳遞實(shí)參時(shí)不會(huì)混淆。使用關(guān)鍵字參數(shù)時(shí)無須考慮函數(shù)調(diào)用中的實(shí)參順序,而且關(guān)鍵字參數(shù)還清楚地指出了函數(shù)調(diào)用中各個(gè)值的用途。在Python中,關(guān)鍵字參數(shù)的形式為:

形參名=實(shí)參值關(guān)鍵字參數(shù)演示defperson(name_n,sex_o):#定義一個(gè)person函數(shù)

print("Mynameis",name_n)print("Iama",sex_o)person(name_n='LiHua',sex_o='man')#調(diào)用函數(shù)程序運(yùn)行結(jié)果3.10.2參數(shù)傳遞編寫函數(shù)時(shí),可以為每個(gè)形參指定默認(rèn)值。在調(diào)用函數(shù)中為形參提供了實(shí)參時(shí)將使用指定的實(shí)參值;否則將使用形參的默認(rèn)值。因此,為形參指定默認(rèn)值后,可在函數(shù)調(diào)用中省略相應(yīng)的實(shí)參。在Python中,默認(rèn)值參數(shù)的形式為:

形參名=默認(rèn)值默認(rèn)值參數(shù)演示defperson(name_n,sex_o='man'): #定義一個(gè)person函數(shù)

print("Mynameis",name_n)print("Iama",sex_o)person(name_n='LiHong',sex_o='woman') #調(diào)用函數(shù),修改第二個(gè)參數(shù)person(name_n='LiHua') #采用默認(rèn)參數(shù)程序運(yùn)行結(jié)果3.11.1類與對(duì)象類是一種廣義的數(shù)據(jù),這種數(shù)據(jù)類型的元素既包含數(shù)據(jù),也包含操作數(shù)據(jù)的函數(shù)類的創(chuàng)建在Python中,可以通過class關(guān)鍵字來創(chuàng)建類。類的格式一般如下:claas類名:

類體類一般由類頭和類體兩部分組成。類頭由關(guān)鍵字class開頭,后面緊跟著類名,類體包括所有細(xì)節(jié),向右縮進(jìn)對(duì)齊3.11.1類與對(duì)象例

創(chuàng)建Dog類classDog():def_init_(self,name,age):#初始化Dog類

=nameself.age=agedefsit(self):#定義類方法

print(.title()+"isnowsitting.")defroll_over(self):#定義類方法

print(.title()+"rolledover!"根據(jù)Dog類創(chuàng)建的每個(gè)實(shí)例都將存儲(chǔ)名字和年齡,我們賦予每只小狗蹲下(sit())和打滾(roll_over())的能力。類中的函數(shù)稱為方法,之前或今后學(xué)習(xí)的方法都適用于它。_init_())是一個(gè)特殊的方法,每當(dāng)根據(jù)Dog類創(chuàng)建新實(shí)例時(shí),Python都會(huì)自動(dòng)運(yùn)行該方法3.11.1類與對(duì)象類的使用(實(shí)例化)進(jìn)行Dog類的實(shí)例化:my_dog=Dog('wangcai',6)print("Mydog'snameis"+my_.title())print("Mydogis"+str(my_dog.age)+"yearsold.")程序運(yùn)行結(jié)果:

(Dog類實(shí)例化顯示結(jié)果)3.11.1類與對(duì)象屬性和方法的訪問句點(diǎn)表示法訪問屬性:my_my_dog.age訪問Dog類中定義的name和age屬性訪問方法:my_dog=Dog('wangcai',6)my_dog.sit()

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論