




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)院系部名稱(chēng)主講:授課教師姓名Python基礎(chǔ)教程第2章編程基礎(chǔ)Python語(yǔ)言與Perl,C和Java等語(yǔ)言有許多相似之處。但是,也存在一些差異。在本章中學(xué)習(xí)Python的基礎(chǔ)語(yǔ)法,以快速學(xué)會(huì)Python編程。第2章編程基礎(chǔ)第1章初識(shí)Python學(xué)習(xí)目標(biāo)1.了解Python的固定語(yǔ)法2.掌握Python的用戶(hù)輸入與屏幕輸出3.熟悉Python的變量和數(shù)據(jù)類(lèi)型,并掌握Python類(lèi)型轉(zhuǎn)換4.了解Python變量和對(duì)象的關(guān)系5.掌握各種運(yùn)算符的使用教學(xué)重點(diǎn)Python屏幕輸出、變量和數(shù)據(jù)類(lèi)型、類(lèi)型轉(zhuǎn)換、運(yùn)算符的使用教學(xué)方式案例教學(xué)法、分組討論法、自主學(xué)習(xí)法、探究式訓(xùn)練法課時(shí)建議8課時(shí)本章主要內(nèi)容認(rèn)識(shí)Python程序和中文編碼1Python固定語(yǔ)法2基本輸入輸出3變量和數(shù)據(jù)類(lèi)型4運(yùn)算符6實(shí)訓(xùn)75對(duì)象和變量2.1認(rèn)識(shí)Python程序和中文編碼
本節(jié)介紹Python程序的基本入門(mén)編程代碼及中文編碼?;救腴T(mén)編碼代碼采用通用的“Hello,World!”程序介紹。中文編碼,在python新的開(kāi)發(fā)環(huán)境中,UTF-8中文編碼問(wèn)題已經(jīng)得到解決。如讀者需要使用其他編碼方式,需要參考本節(jié)內(nèi)容進(jìn)行修改。[學(xué)習(xí)目標(biāo)]1.認(rèn)識(shí)Python程序,了解Python基本入門(mén)編程代碼2.了解Python中文編碼方式2.1認(rèn)識(shí)Python程序和中文編碼對(duì)于大多數(shù)程序語(yǔ)言,第一個(gè)入門(mén)編程代碼便是"HelloWorld!",python3.0+版本已經(jīng)把print作為一個(gè)內(nèi)置函數(shù),正確輸出"HelloWorld!"代碼極其簡(jiǎn)單,只需要一行,直接輸出。如下:print("Hello,World!")Python輸出"Hello,World!",英文沒(méi)有問(wèn)題,但是如果輸出中文字符"您好,世界"就有可能會(huì)碰到中文編碼問(wèn)題。2.1認(rèn)識(shí)Python程序和中文編碼在Python開(kāi)發(fā)環(huán)境中,文件中如未指定編碼,在執(zhí)行過(guò)程會(huì)出現(xiàn)報(bào)錯(cuò):print("您好,世界")如未指定編碼,將報(bào)Non-ASCIIcharacter出錯(cuò)信息解決方法:在文件開(kāi)頭加入#-*-coding:UTF-8-*-或者#coding=utf-8。在學(xué)習(xí)過(guò)程中,代碼中包含中文,就需要在頭部指定編碼。在腳本開(kāi)發(fā)環(huán)境中,通常不需要添加指定編碼,環(huán)境已經(jīng)內(nèi)置指定。如腳本需要打包發(fā)布,在某些情況下需要指定編碼。2.2Python固定語(yǔ)法Python語(yǔ)言語(yǔ)法簡(jiǎn)單,易于學(xué)習(xí)和掌握。本節(jié)從Python程序的基本結(jié)構(gòu)開(kāi)始,講解Python語(yǔ)言的基本知識(shí),涉及標(biāo)識(shí)符及保留字、注釋、語(yǔ)句分隔、語(yǔ)句續(xù)行、大小寫(xiě)及代碼塊等內(nèi)容。[學(xué)習(xí)目標(biāo)]1.了解Python代碼塊2.熟悉Python行處理方式并能運(yùn)用3.熟悉Python標(biāo)識(shí)符定義4.了解Python保留字2.2.1Python代碼塊Python代碼塊是通過(guò)縮進(jìn)(空格)來(lái)表示的。Python源代碼最大的特點(diǎn)是用縮進(jìn)表示程序代碼的層次。1.代碼塊構(gòu)成
縮進(jìn)相同的一組語(yǔ)句構(gòu)成一個(gè)代碼塊,我們稱(chēng)之代碼塊。
像if、while、def和class這樣的復(fù)合語(yǔ)句,首行以關(guān)鍵字開(kāi)始,以冒號(hào)(:)結(jié)束,該行之后的一行或多行代碼構(gòu)成代碼塊。在包含代碼嵌套時(shí),需要特別注意代碼的縮進(jìn)情況。同級(jí)代碼塊的縮進(jìn)量需要保持相同,不同的縮進(jìn)量會(huì)出現(xiàn)異?;蝈e(cuò)誤結(jié)果。此問(wèn)題在條件及循環(huán)中尤其要注意。2.2.2Python行處理Python中一條語(yǔ)句占一行。一行代碼的長(zhǎng)度不宜超過(guò)80個(gè)字符。如果實(shí)際代碼超過(guò)80字符,通常使用圓括號(hào)、方括號(hào)和花括號(hào)折疊長(zhǎng)行,也可以使用反斜杠延續(xù)行。1.行和縮進(jìn)Python的代碼塊不使用縮進(jìn)來(lái)寫(xiě)代碼塊。除了條件循環(huán)語(yǔ)句體以外,其他用回車(chē)表示行結(jié)束,繼續(xù)下一新行。如一行里寫(xiě)多條代碼時(shí),可以使用“;”分號(hào)隔開(kāi)不同的語(yǔ)句。Python最具特色的就是用縮進(jìn)來(lái)寫(xiě)模塊??s進(jìn)的空白數(shù)量是可變的,但是所有代碼塊語(yǔ)句必須包含相同的縮進(jìn)空白數(shù)量,這個(gè)必須嚴(yán)格執(zhí)行。2.2.2Python行處理2.多行語(yǔ)句Python語(yǔ)句中一般回車(chē)開(kāi)啟新行作為前一語(yǔ)句的結(jié)束符??梢允褂眯备埽╘)將一行的語(yǔ)句分為多行顯示。如>>>total=a+\ b+\
c該語(yǔ)句和“total=a+b+c”含義相同,只是使用斜杠(\)將一行的語(yǔ)句分為多行顯示。
語(yǔ)句中如果包含[],{}或()括號(hào),需要將一行的語(yǔ)句分為多行顯示時(shí)不需要使用多行連接符。>>>days=['Monday','Tuesday','Wednesday','Thursday','Friday']2.2.2Python行處理3.空行設(shè)置
函數(shù)之間或類(lèi)的方法之間用空行分隔,表示一段新的代碼的開(kāi)始。類(lèi)和函數(shù)入口之間也用一行空行分隔,以突出函數(shù)入口的開(kāi)始。
空行與代碼縮進(jìn)不同,空行并不是Python語(yǔ)法的一部分。書(shū)寫(xiě)時(shí)不插入空行,Python解釋器運(yùn)行也不會(huì)出錯(cuò)。但是空行的作用在于分隔兩段不同功能或含義的代碼,便于日后代碼的維護(hù)或重構(gòu)。
記?。嚎招幸彩浅绦虼a的一部分。2.2.2Python行處理4.Python注釋
注釋用于為程序添加說(shuō)明性的文字,注釋可以起到一個(gè)備注的作用。Python在運(yùn)行程序時(shí),會(huì)忽略被注釋的內(nèi)容。
Python的注釋有多種,有單行注釋?zhuān)嘈凶⑨專(zhuān)孔⑨專(zhuān)形淖⑨屢彩浅S玫?。python中單行注釋采用#開(kāi)頭。井號(hào)(#)常被用作單行注釋符號(hào),在代碼中使用#時(shí),它右邊的任何數(shù)據(jù)都會(huì)被忽略,當(dāng)作是注釋。批量、多行注釋符號(hào),
在python中有時(shí)需要注釋很多行,這種情況下就需要批量多行注釋符了。多行注釋是用三引號(hào)‘’‘’‘’包含的。2.2.3Python標(biāo)識(shí)符及保留字1.Python標(biāo)識(shí)符在python里,標(biāo)識(shí)符有字母、數(shù)字、下劃線組成。在python中,所有標(biāo)識(shí)符可以包括英文、數(shù)字以及下劃線(_),但不能以數(shù)字開(kāi)頭。python中的標(biāo)識(shí)符是區(qū)分大小寫(xiě)的。以下劃線開(kāi)頭的標(biāo)識(shí)符是有特殊意義的。以單下劃線開(kāi)頭(如_fu)的代表不能直接訪問(wèn)的類(lèi)屬性,需通過(guò)類(lèi)提供的接口進(jìn)行訪問(wèn),不能用"fromxxximport*"而導(dǎo)入;以雙下劃線開(kāi)頭的(__fu)代表類(lèi)的私有成員;以雙下劃線開(kāi)頭和結(jié)尾的(__fu__)代表python里特殊方法專(zhuān)用的標(biāo)識(shí),如__init__()代表類(lèi)的構(gòu)造函數(shù)。2.2.3Python標(biāo)識(shí)符及保留字2.Python引號(hào)Python使用使用單引號(hào)('),雙引號(hào)("),三引號(hào)(''''''或"""""")來(lái)表示字符串,引號(hào)的開(kāi)始與結(jié)束必須是相同類(lèi)型的。
其中三引號(hào)可以由多行組成,編寫(xiě)多行文本的快捷語(yǔ)法,常用語(yǔ)文檔字符串,在文件的特定地點(diǎn),被當(dāng)作注釋?zhuān)?.2.3Python標(biāo)識(shí)符及保留字3.Python保留字符序號(hào)保留字說(shuō)
明1and用于表達(dá)式運(yùn)算,邏輯與操作2as用于類(lèi)型轉(zhuǎn)換3assert斷言,用于判斷變量或條件表達(dá)式的值是否為真4async異步協(xié)程函數(shù),async用來(lái)聲明一個(gè)函數(shù)是協(xié)程。5await使用await調(diào)用協(xié)程函數(shù),await必須在函數(shù)內(nèi)部。6break中斷循環(huán)語(yǔ)句的執(zhí)行7class用于定義類(lèi)8continue繼續(xù)執(zhí)行下一次循環(huán)9def用于定義函數(shù)或方法10del刪除變量或序列的值11elif條件語(yǔ)句,與if,else結(jié)合使用12else條件語(yǔ)句,與if,elif結(jié)合使用,也可用于異常和循環(huán)語(yǔ)句13exceptexcept包含捕獲異常后的操作代碼塊,與try,finally結(jié)合使用14False布爾類(lèi)型的值,表示假,與True對(duì)應(yīng)15finally用于異常語(yǔ)句,出現(xiàn)異常后,始終要執(zhí)行finally,包含的代碼塊,與try,except結(jié)合使用16forfor循環(huán)語(yǔ)句17from用于導(dǎo)入模塊,與import結(jié)合使用2.2.3Python標(biāo)識(shí)符及保留字3.Python保留字符序號(hào)保留字說(shuō)
明18globe定義全局變量19if條件語(yǔ)句,與else,elif結(jié)合使用20import用于導(dǎo)入模塊,與from結(jié)合使用21in判斷變量是否在序列中22is判斷變量是否為某個(gè)類(lèi)的實(shí)例23lambda定義匿名變量24NoneNone是一個(gè)特殊的常量,數(shù)據(jù)類(lèi)型NoneType。None不是0。None不是空字符串。None和任何其他數(shù)據(jù)類(lèi)型比較永遠(yuǎn)返回False。25nonlocal關(guān)鍵字用來(lái)在函數(shù)或其他作用域中使用外層(非全局)變量26not用于表達(dá)式運(yùn)算,邏輯非操作27or用于表達(dá)式運(yùn)算,邏輯或操作28pass空的類(lèi),方法,函數(shù)的占位符29raise異常拋出操作30return用于從函數(shù)返回計(jì)算結(jié)果31True布爾類(lèi)型的值,表示真,與False對(duì)應(yīng)32trytry包含可能會(huì)出現(xiàn)異常的語(yǔ)句,與except,finally結(jié)合使用33whilewhile的循環(huán)語(yǔ)句34with簡(jiǎn)化python的語(yǔ)句35yield用于從函數(shù)依次返回值,主要用于生成器函數(shù)。2.3Python基本輸入輸出
對(duì)所有的程序,輸入和輸出是用戶(hù)與程序進(jìn)行交互的主要途徑,通過(guò)輸入程序能夠獲取程序運(yùn)行所需的原始數(shù)據(jù),通過(guò)輸出程序能夠?qū)?shù)據(jù)的處理結(jié)果輸出,讓用戶(hù)了解運(yùn)行結(jié)果。在Python語(yǔ)言中數(shù)據(jù)的輸入/輸出是通過(guò)調(diào)用函數(shù)實(shí)現(xiàn)的,主要有input()、print()函數(shù)。本節(jié)介紹input()、print()基本用法。[學(xué)習(xí)目標(biāo)]1.掌握input()輸入函數(shù)的基本用法2.掌握print()輸出函數(shù)的基本用法3.掌握print()函數(shù)的sep與end參數(shù)用法。4.掌握print()函數(shù)變量輸出2.3.1用戶(hù)輸入Python程序如果需要輸入,就必須調(diào)用input()函數(shù)input()函數(shù)的一般格式如下:input([prompt])
其中的參數(shù)[prompt]是可選的,即可以使用,也可以不使用。參數(shù)是用來(lái)提供用戶(hù)輸入的提示信息的字符串,當(dāng)用戶(hù)輸入程序所需要的數(shù)據(jù)時(shí),就會(huì)以字符串的形式返回。實(shí)例操作通過(guò)鍵盤(pán)輸入自己的姓名與學(xué)號(hào),將輸入的姓名存放在Name中,將輸入的學(xué)號(hào)存放在Num中,以后可以使用Name和Num來(lái)引用姓名和學(xué)號(hào)2.3.1用戶(hù)輸入input()函數(shù)是接收用戶(hù)在鍵盤(pán)輸入的數(shù)據(jù),可以使用類(lèi)型函數(shù)type()函數(shù)查看返回的對(duì)象類(lèi)型。
類(lèi)型函數(shù)type()格式如下:Type(對(duì)象名)實(shí)例操作可以發(fā)現(xiàn),不管用戶(hù)輸入的是數(shù)字還是字母符號(hào),input()函數(shù)均返回字符串形式。2.3.1用戶(hù)輸入input([prompt])函數(shù)會(huì)假設(shè)輸入是一個(gè)有效的Python表達(dá)式,并返回運(yùn)算結(jié)果。代碼中input()是函數(shù)調(diào)用的格式,這個(gè)函數(shù)是Python內(nèi)置函數(shù),直接調(diào)用就可以。函數(shù)中參數(shù)[prompt],如'請(qǐng)輸入您的姓名:'是可選參數(shù),作用是當(dāng)然程序運(yùn)行時(shí),會(huì)進(jìn)行相關(guān)提示,這樣用戶(hù)能知道將要輸入的是什么數(shù)據(jù),否則用戶(hù)看不到提示,可能會(huì)認(rèn)為程序正在運(yùn)行,而在一邊等待運(yùn)行結(jié)果,對(duì)不熟悉的用戶(hù)可能會(huì)造成不知所措的感覺(jué)。這也是編程所需要考慮的用戶(hù)友好性。2.3.2屏幕輸出Python程序如果需要輸出,就必須調(diào)用其內(nèi)置的輸出print()函數(shù)。print()函數(shù)的基本形式如下:print(value)print()函數(shù)在Python3.X中是唯一的數(shù)據(jù)輸出形式。print()函數(shù)輸出目標(biāo)是顯示器。例如之前所提到的print(“helloworld”),“helloworld”是字符串,需要用引號(hào)引起來(lái)。如果是數(shù)字或變量,不需要用引號(hào),直接輸出。2.3.2屏幕輸出直接輸出一個(gè)字符串:
>>>print("我叫張三,我的學(xué)號(hào)是1。")Python還可以使用多個(gè)逗號(hào)隔開(kāi)的表達(dá)式??梢詫⒍鄠€(gè)逗號(hào)隔開(kāi)的表達(dá)式轉(zhuǎn)換成一個(gè)字符串表達(dá)式,并將結(jié)果寫(xiě)到標(biāo)準(zhǔn)輸出。>>>print("我叫張三,","我的學(xué)號(hào)是1。")2.3.2屏幕輸出>>>print("我叫張三,我的學(xué)號(hào)是1。")上例是直接輸出一個(gè)字符串。Python還可以使用多個(gè)逗號(hào)隔開(kāi)的表達(dá)式??梢詫⒍鄠€(gè)逗號(hào)隔開(kāi)的表達(dá)式轉(zhuǎn)換成一個(gè)字符串表達(dá)式,并將結(jié)果寫(xiě)到標(biāo)準(zhǔn)輸出。>>>print("我叫張三,","我的學(xué)號(hào)是1。")2.3.2屏幕輸出Python使用多個(gè)逗號(hào)隔開(kāi)的表達(dá)式時(shí),默認(rèn)的分隔符是空格,可以修改默認(rèn)的分隔符。如要
做到和一開(kāi)始輸出的格式完全相同,采用多個(gè)逗號(hào)隔開(kāi)的表達(dá)式時(shí),第一個(gè)字符串后不加逗號(hào),使用sep=’,’改變默認(rèn)分隔符為逗號(hào)。>>>print("我叫張三","我的學(xué)號(hào)是1",sep=',',end='。')2.3.2屏幕輸出print()有多個(gè)參數(shù),多參數(shù)的基本形式如下:Print(value,……,sep=‘’,end=’\n’)
其中,value是用戶(hù)要輸出的信息,后面的省略號(hào)表示可以有多個(gè)要輸出的信息。sep=‘’是多個(gè)輸出信息的分隔符,默認(rèn)值是一個(gè)空格,end是print()函數(shù)中所有要輸出信息之后添加的符號(hào),默認(rèn)值為換行符。2.3.2屏幕輸出Python輸出的是字符串,需要用引號(hào)引起來(lái)。如果輸出的是數(shù)字,不能使用引號(hào)。數(shù)字直接輸出。
很多時(shí)候,print()函數(shù)需要輸出變量。變量和數(shù)字一樣,變量的引用不能加引號(hào),添加引號(hào)就成字符串,變量是直接引用。>>>Name=input('請(qǐng)輸入您的姓名:')>>>print("我叫",Name)
輸出時(shí),Name為鍵盤(pán)輸入的數(shù)據(jù),此時(shí)Name為變量,不能用引號(hào)引起來(lái)。2.4Python變量和數(shù)據(jù)類(lèi)型
數(shù)據(jù)類(lèi)型決定了程序如何存儲(chǔ)和處理數(shù)據(jù)。和Java、C#一樣,Python有著豐富的數(shù)據(jù)類(lèi)型,可以輕松完成各種數(shù)據(jù)處理。某些方面來(lái)說(shuō),甚至比Java、C#功能更為強(qiáng)大。本節(jié)主要介紹Python基本的數(shù)據(jù)類(lèi)型和變量。[學(xué)習(xí)目標(biāo)]1.掌握Python的變量定義和賦值2.了解變量的回收機(jī)制3.掌握Python變量值交換的方式4.掌握Python數(shù)據(jù)類(lèi)型5.掌握轉(zhuǎn)義字符的使用6.掌握Python類(lèi)型轉(zhuǎn)換2.4.1變量和賦值1.變量的定義和賦值Python語(yǔ)言屬于動(dòng)態(tài)數(shù)據(jù)類(lèi)型語(yǔ)言。其數(shù)據(jù)類(lèi)型處理方式有所不同。Python中的變量不需要聲明,變量的賦值操作
即是變量聲明和定義的過(guò)程。Python中變量定義如下:a=1變量在第一次賦值時(shí)創(chuàng)建,再次出現(xiàn)時(shí)是使用;變量沒(méi)有數(shù)據(jù)類(lèi)型的概念。數(shù)據(jù)類(lèi)型屬于對(duì)象,類(lèi)型決定了對(duì)象在內(nèi)存中的存儲(chǔ)方式。變量引用了對(duì)象。當(dāng)在表達(dá)式中使用變量時(shí),變量立即被其引用的對(duì)象替代,所以變量在使用前必須賦值。2.4.1變量和賦值變量包括變量的標(biāo)識(shí),名稱(chēng)和數(shù)據(jù)這些信息。變量的命名的要求遵循以下規(guī)則:變量不能采用數(shù)字開(kāi)頭,不要包含空格等特殊字符,可以使用字母、下劃線開(kāi)頭命名,后面可以接任意數(shù)量的下劃線、數(shù)字、字母或字符。變量名區(qū)分大小寫(xiě)。變量名禁止使用Python關(guān)鍵字(也稱(chēng)保留字)。每個(gè)變量在使用前都必須賦值,變量賦值以后該變量才會(huì)被創(chuàng)建。2.4.1變量和賦值變量賦值以后該變量才會(huì)被創(chuàng)建。等號(hào)(=)用來(lái)給變量賦值。等號(hào)(=)運(yùn)算符左邊是一個(gè)變量名,等號(hào)(=)運(yùn)算符右邊是存儲(chǔ)在變量中的值。>>>a=1
執(zhí)行過(guò)程如下:語(yǔ)句“a=1”時(shí)Python解釋器會(huì)用值語(yǔ)句右邊的表達(dá)式的值1創(chuàng)建一個(gè)整數(shù)對(duì)象,對(duì)象的身份就是內(nèi)存中存儲(chǔ)值1的內(nèi)存地址,也可以理解成指向這個(gè)地址的指針,而變量a則是引用這個(gè)地址的名字。2.4.1變量和賦值多個(gè)變量賦值a=b=c=1
創(chuàng)建一個(gè)整型對(duì)象,值為1,三個(gè)變量被分配到相同的內(nèi)存空間上。為多個(gè)對(duì)象指定多個(gè)變量a,b,c=1,2,"john"
兩個(gè)整型對(duì)象1和2的分配給變量a和b,字符串對(duì)象"john"分配給變量c。2.4.1變量和賦值2.變量的垃圾回收Python使用了自動(dòng)垃圾回收機(jī)制。當(dāng)對(duì)象變量沒(méi)有任何引用時(shí),其占用的內(nèi)存空間會(huì)自動(dòng)被回收。
在內(nèi)部,Python為每一個(gè)對(duì)象創(chuàng)建一個(gè)計(jì)數(shù)器,計(jì)數(shù)器記錄對(duì)象變量的引用次數(shù)。當(dāng)計(jì)數(shù)器為0時(shí),對(duì)象被刪除,其內(nèi)存空間自動(dòng)被收回。注意:Python自動(dòng)完成對(duì)象的垃圾回收,在編程時(shí)不需要考慮對(duì)象回收問(wèn)題。2.4.1變量和賦值3.變量值交換python應(yīng)用賦值語(yǔ)句中,經(jīng)典的情況是可以直接交換二個(gè)變量的值。交換兩個(gè)變量的值有例2-4-4所示寫(xiě)法:Python中直接交換法:>>>x=3>>>y=4>>>x,y=y,x2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型1.Python類(lèi)型概述Python語(yǔ)言中,數(shù)據(jù)類(lèi)型很多,主要有簡(jiǎn)單數(shù)據(jù)類(lèi)型和結(jié)構(gòu)數(shù)據(jù)類(lèi)型。簡(jiǎn)單數(shù)據(jù)類(lèi)型就是日常生活中經(jīng)常使用的數(shù)據(jù)。本節(jié)介紹這些簡(jiǎn)單的數(shù)據(jù)類(lèi)型。
對(duì)象的類(lèi)型用于描述對(duì)象的內(nèi)部表示及它支持的方法與操作。創(chuàng)建一個(gè)特定的對(duì)象,就認(rèn)為這個(gè)對(duì)象是該類(lèi)型的實(shí)例。一旦一個(gè)對(duì)象實(shí)例被創(chuàng)建,它的身份與類(lèi)型是不可改變的。如果對(duì)象的值是可改變的,則稱(chēng)對(duì)象為可變對(duì)象(mutable),當(dāng)然還有不可變對(duì)象(immutable)。如果對(duì)象包含對(duì)其它對(duì)象的引用,則將其稱(chēng)為容器或集合。2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型1.Python類(lèi)型概述在Python中,變量就是變量,它沒(méi)有類(lèi)型,我們所說(shuō)的"類(lèi)型"是變量所指的內(nèi)存中對(duì)象的類(lèi)型。在內(nèi)存中存儲(chǔ)的數(shù)據(jù)可以有多種類(lèi)型。Python有六個(gè)標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型:Numbers(數(shù)字)String(字符串)List(列表)Tuple(元組)Set(集合)Dictionary(字典)2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型Python類(lèi)型表類(lèi)型分類(lèi)類(lèi)型名稱(chēng)描
述NoneType(None)Null對(duì)象None數(shù)字Int整數(shù)Float浮點(diǎn)數(shù)Complex復(fù)數(shù)Bool布爾值(True/False)序列Str字符串Bytes字節(jié)串Bytearray字節(jié)數(shù)組List列表Tuple元組映射Dict字典集合Set可變集合Frozenset不可變集合2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型2.Python字符串類(lèi)型字符串或串(String)是由數(shù)字、字母、下劃線組成的一串字符,通常用單引號(hào)、雙引號(hào)或三引號(hào)引起來(lái)。字符串是程序語(yǔ)言中常用的數(shù)據(jù)類(lèi)型,它是序列類(lèi)型(包括字符串、列表、元組、字節(jié)串等)之一,也是最常用的、最簡(jiǎn)單的序列。字符串中的字符可以包含數(shù)字、字母、中文字符、特殊符號(hào)及一些控制符(如換行符、制表符等)。字符串是不可變對(duì)象??沾硎緸椋?或"",注意,只有一對(duì)單引號(hào)或一對(duì)雙引號(hào)。2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型2.Python字符串類(lèi)型字符串單引號(hào)和雙引號(hào)字符串本質(zhì)是相同的。如果字符串內(nèi)含有單引號(hào)時(shí),整個(gè)字符串需要使用雙引號(hào)(或字符串內(nèi)的單引號(hào)使用轉(zhuǎn)義字符)。同樣,如果字符串內(nèi)含有雙引號(hào)時(shí),整個(gè)字符串需要使用單引號(hào)(或字符串內(nèi)的雙引號(hào)使用轉(zhuǎn)義字符)。三引號(hào)的字符串可以由多行組成,單引號(hào)和雙引號(hào)字符串則不可以。當(dāng)需要使用大段多行的字符串行,可以使用三引號(hào)的字符串。字符串一般記為:s="a1a2···an"(n>=0)它是編程語(yǔ)言中表示文本的數(shù)據(jù)類(lèi)型。字符串的運(yùn)算主要有:成員檢查(in和notin)、連接(用”+”實(shí)現(xiàn))、重復(fù)(用”*”實(shí)現(xiàn))。2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型3.Python轉(zhuǎn)義字符python用反斜杠(\)轉(zhuǎn)義字符。轉(zhuǎn)義字符用于計(jì)算機(jī)中的不可見(jiàn)字符。不可見(jiàn)字符是指不能顯示圖形僅僅是表示某一控制功能的代碼,如ASCII碼中的換行、制表符等。不可見(jiàn)字符只能用轉(zhuǎn)義字符表示??梢?jiàn)字符也可以用轉(zhuǎn)義字符表示。轉(zhuǎn)義字符以”\”開(kāi)頭,后跟字符或數(shù)字,轉(zhuǎn)義字符描述\(在行尾時(shí))續(xù)行符\\反斜杠符號(hào)\'單引號(hào)\"雙引號(hào)\a響鈴2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型3.Python轉(zhuǎn)義字符轉(zhuǎn)義字符描述\b退格(Backspace)\e轉(zhuǎn)義\000空\(chéng)n換行\(zhòng)v縱向制表符\t橫向制表符\r回車(chē)\f換頁(yè)\oyy八進(jìn)制數(shù),yy代表的字符,例如:\o12代表?yè)Q行\(zhòng)xyy十六進(jìn)制數(shù),yy代表的字符,例如:\x0a代表?yè)Q行\(zhòng)other其它的字符以普通格式輸出2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型4.Python數(shù)字類(lèi)型Python數(shù)字?jǐn)?shù)據(jù)類(lèi)型用于存儲(chǔ)數(shù)值。
數(shù)字?jǐn)?shù)據(jù)類(lèi)型用于存儲(chǔ)數(shù)值。數(shù)字是Python語(yǔ)言中最常用的對(duì)象。Python3支持int、float、bool、complex(復(fù)數(shù))。他們是不可改變的數(shù)據(jù)類(lèi)型,這意味著改變數(shù)字?jǐn)?shù)據(jù)類(lèi)型會(huì)分配一個(gè)新的對(duì)象。如果改變數(shù)字?jǐn)?shù)據(jù)類(lèi)型得值,將重新分配內(nèi)存空間。2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型4.Python數(shù)字類(lèi)型(1)整型。在Python語(yǔ)言中,整數(shù)有下列表示方法?!袷M(jìn)制整數(shù):如1、100、12345等?!袷M(jìn)制整數(shù):以0X開(kāi)頭,X可以大寫(xiě)或小寫(xiě)。如0X10、0x5F、0xABCD等?!癜诉M(jìn)制整數(shù):以0O開(kāi)頭,O可以大寫(xiě)或小寫(xiě)。如0o12、0o55、0O77等?!穸M(jìn)制整數(shù):以0B開(kāi)頭,B可以大寫(xiě)或小寫(xiě)。如0B111、0b101、0b1111等。進(jìn)制之間的轉(zhuǎn)換,可以使用相關(guān)函數(shù)完成。2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型4.Python數(shù)字類(lèi)型進(jìn)制之間的轉(zhuǎn)換,可以使用相關(guān)函數(shù)完成。bin()函數(shù),可將十進(jìn)制轉(zhuǎn)為二進(jìn)制;oct()函數(shù),可將十進(jìn)制轉(zhuǎn)為八進(jìn)制;hex()函數(shù),可將十進(jìn)制轉(zhuǎn)為十六進(jìn)制。>>>bin(5)>>>oct(5)>>>hex(5)2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型4.Python數(shù)字類(lèi)型整數(shù)類(lèi)型的數(shù)據(jù)對(duì)象不受數(shù)據(jù)位數(shù)的限制,只受可用內(nèi)存大小的限制。也就是說(shuō)它和系統(tǒng)的最大整型是一致的。如果是32位計(jì)算機(jī)系統(tǒng),可以表示的數(shù)的范圍是?231~231?1;如果是64位計(jì)算機(jī)系統(tǒng),可以表示的數(shù)的范圍是?263~263?1。數(shù)值類(lèi)型的賦值和計(jì)算都是很直觀的。賦值后可以使用內(nèi)置的type()函數(shù)來(lái)查詢(xún)變量所指的對(duì)象類(lèi)型。>>>a=0b101>>>type(a)上述代碼中,第1行代碼的變量a的值是一個(gè)二進(jìn)制的整數(shù),屬于int類(lèi)型。第2行驗(yàn)證了這個(gè)結(jié)果2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型一些數(shù)值類(lèi)型的實(shí)例長(zhǎng)整型也可以使用小寫(xiě)"L",但是還是建議使用大寫(xiě)"L",避免與數(shù)字"1"混淆。Python使用"L"來(lái)顯示長(zhǎng)整型。現(xiàn)在整型和長(zhǎng)整型已無(wú)縫接合,長(zhǎng)整型后綴L可有可無(wú)。事實(shí)上,在Python3里,已只使用一種整數(shù)類(lèi)型int,表示為長(zhǎng)整型。IntLongfloatcomplex1051924361L0.03.14j100-0x19323L15.2045.j-7860122L-21.99.322e-36j0800xDEFABCECBDAECBFBAEl32.3+e18.876j-0490535633629843L-90.-.6545+0J-0x260-052318172735L-32.54e1003e+26J0x69-4721885298529L70.2-E124.53e-7j2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型4.Python數(shù)字類(lèi)型(2)浮點(diǎn)型浮點(diǎn)型(float)用于表示實(shí)數(shù)。Python中的浮點(diǎn)類(lèi)型類(lèi)似Java語(yǔ)言中的double類(lèi)型,是雙精度浮點(diǎn)型,可以直接用十進(jìn)制或科學(xué)計(jì)數(shù)法表示。十進(jìn)制數(shù)形式,由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn),如0.123、12.85、26.98等;科學(xué)計(jì)數(shù)法形式,如:2.1E5、3.7e-2等。其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。Python浮點(diǎn)型遵循IEEE754雙精度標(biāo)準(zhǔn),每個(gè)浮點(diǎn)數(shù)占8個(gè)字節(jié),能表示的數(shù)的范圍是-1.8308~1.8308。>>>1.2e5>>>-1.8e3072.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型4.Python數(shù)字類(lèi)型(3)布爾類(lèi)型Python中,將布爾類(lèi)型看作一種特殊的整型。bool類(lèi)型包括True、False兩個(gè)值,分別映射到整數(shù)1和0,因此,可以把bool類(lèi)型理解為整數(shù)類(lèi)型。每一個(gè)Python對(duì)象天生都具有布爾值(True或False),因此每一個(gè)對(duì)象都可用于布爾測(cè)試,在條件或循環(huán)判斷中使用。以下對(duì)象的布爾值都是False:None、False(布爾類(lèi)型)、所有的值為零的數(shù)(空字符串)“”、(空列表)[]、
(空元組)()、(空字典){}用戶(hù)服務(wù)自定義的類(lèi)實(shí)例對(duì)象,如果定義了nonzero()或len()方法,那方法會(huì)返回0或False,除此之外,其他的對(duì)象的布爾值都為T(mén)rue。2.4.2簡(jiǎn)單數(shù)據(jù)類(lèi)型4.Python數(shù)字類(lèi)型(4)復(fù)數(shù)類(lèi)型
復(fù)數(shù)類(lèi)型用于表示數(shù)學(xué)中的復(fù)數(shù),復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,表示為real+imagj或real+imagJ,一般用a+bj或者complex(a,b)表示,復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型。如3+4j、3.1+4.1j等就是復(fù)數(shù)。>>>a=3+4j>>>b=3.1+4.1j>>>a+b(6.1+8.1j)>>>b.real #實(shí)部>>>a.imag #虛部>>>isinstance(a,complex) #檢查是否是復(fù)數(shù)2.4.3類(lèi)型轉(zhuǎn)換
1.什么情況下需要類(lèi)型轉(zhuǎn)換
例2-4-10,根據(jù)2.3節(jié)中的輸入操作,通過(guò)鍵盤(pán)輸入姓名和學(xué)號(hào),再使用占位符進(jìn)行格式化輸出,輸出的姓名與學(xué)號(hào)。>>>Name=input("請(qǐng)輸入您的姓名:")>>>Num=input("請(qǐng)輸入您的學(xué)號(hào):")>>>print("我叫%s,我的學(xué)號(hào)是%d"%(Name,Num))
代碼輸出錯(cuò)誤。提示%d格式錯(cuò)誤,請(qǐng)求的是數(shù)字,而不是字符串。也就是說(shuō)。使用%d,要求給的是數(shù)字,但實(shí)際給的是string字符串。這個(gè)錯(cuò)誤,就是因?yàn)轭?lèi)型引發(fā)的錯(cuò)誤。不同類(lèi)型的之間,需要進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換過(guò)程中,需要使用相關(guān)的函數(shù)。
解決這個(gè)錯(cuò)誤的關(guān)鍵就是類(lèi)型轉(zhuǎn)換。
將代碼修改,在輸出的數(shù)組(Name,Num)中,將%d所對(duì)應(yīng)的變量Num的類(lèi)型進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換為整型,使用整型轉(zhuǎn)換函數(shù)int()后輸出。>>>print("我叫%s,我的學(xué)號(hào)是%d"%(Name,int(Num)))2.4.3類(lèi)型轉(zhuǎn)換
1.什么情況下需要類(lèi)型轉(zhuǎn)換
例2-4-10,根據(jù)2.3節(jié)中的輸入操作,通過(guò)鍵盤(pán)輸入姓名和學(xué)號(hào),再使用占位符進(jìn)行格式化輸出,輸出的姓名與學(xué)號(hào)。>>>Name=input("請(qǐng)輸入您的姓名:")>>>Num=input("請(qǐng)輸入您的學(xué)號(hào):")>>>print("我叫%s,我的學(xué)號(hào)是%d"%(Name,Num))
代碼輸出錯(cuò)誤。提示%d格式錯(cuò)誤,請(qǐng)求的是數(shù)字,而不是字符串。也就是說(shuō)。使用%d,要求給的是數(shù)字,但實(shí)際給的是string字符串。這個(gè)錯(cuò)誤,就是因?yàn)轭?lèi)型引發(fā)的錯(cuò)誤。不同類(lèi)型的之間,需要進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換過(guò)程中,需要使用相關(guān)的函數(shù)。
解決這個(gè)錯(cuò)誤的關(guān)鍵就是類(lèi)型轉(zhuǎn)換。
2.4.3類(lèi)型轉(zhuǎn)換
1.什么情況下需要類(lèi)型轉(zhuǎn)換
將代碼修改,在輸出的數(shù)組(Name,Num)中,將%d所對(duì)應(yīng)的變量Num的類(lèi)型進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換為整型,使用整型轉(zhuǎn)換函數(shù)int()后輸出。>>>print("我叫%s,我的學(xué)號(hào)是%d"%(Name,int(Num)))
int()函數(shù)可以將input()輸入的字符數(shù)值轉(zhuǎn)變成數(shù)字類(lèi)型。相應(yīng)的還有一個(gè)函數(shù)eval()也同樣可以實(shí)現(xiàn)。例如:>>>print("我叫%s,我的學(xué)號(hào)是%d"%(Name,eval(Num)))
輸出結(jié)果形式相同。注意,eval()與int()函數(shù)性質(zhì)不相同,是兩個(gè)不同的函數(shù)。2.4.3類(lèi)型轉(zhuǎn)換
1.什么情況下需要類(lèi)型轉(zhuǎn)換
eval()函數(shù)用來(lái)計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對(duì)象,返回對(duì)象的類(lèi)型是數(shù)字型。
eval()是一個(gè)內(nèi)置函數(shù)??梢詫?shí)現(xiàn)字符串向數(shù)字的轉(zhuǎn)換,還可以進(jìn)行復(fù)雜的數(shù)字表達(dá)運(yùn)算。函數(shù)的一般格式:
eval(字符串[,字典[,映射]])
其中,字符串必須是一個(gè)Python數(shù)字表達(dá)式,字典和映射是字符串中用到的表示字典、映射的變量或?qū)ο蟆?.4.3類(lèi)型轉(zhuǎn)換
2.顯示轉(zhuǎn)換
數(shù)據(jù)類(lèi)型的顯示轉(zhuǎn)換,也稱(chēng)為數(shù)據(jù)類(lèi)型的強(qiáng)制類(lèi)型轉(zhuǎn)換,是通過(guò)Python的內(nèi)建函數(shù)來(lái)實(shí)現(xiàn)的類(lèi)型轉(zhuǎn)換。
在轉(zhuǎn)換數(shù)據(jù)類(lèi)型時(shí),將數(shù)據(jù)類(lèi)型作為函數(shù)名即可。以下幾個(gè)內(nèi)置的函數(shù)可以執(zhí)行數(shù)據(jù)類(lèi)型之間的轉(zhuǎn)換。這些函數(shù)返回一個(gè)新的對(duì)象,表示轉(zhuǎn)換的值。2.4.3類(lèi)型轉(zhuǎn)換
函數(shù)描述int(x[,base])將x轉(zhuǎn)換為一個(gè)整數(shù)long(x[,base])將x轉(zhuǎn)換為一個(gè)長(zhǎng)整數(shù)float(x)將x轉(zhuǎn)換到一個(gè)浮點(diǎn)數(shù)complex(real[,imag])創(chuàng)建一個(gè)復(fù)數(shù)str(x)將對(duì)象x轉(zhuǎn)換為字符串repr(x)將對(duì)象x轉(zhuǎn)換為表達(dá)式字符串eval(str)用來(lái)計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對(duì)象tuple(s)將序列s轉(zhuǎn)換為一個(gè)元組list(s)將序列s轉(zhuǎn)換為一個(gè)列表set(s)轉(zhuǎn)換為可變集合dict(d)創(chuàng)建一個(gè)字典。d必須是一個(gè)序列(key,value)元組。frozenset(s)轉(zhuǎn)換為不可變集合chr(x)將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)字符unichr(x)將一個(gè)整數(shù)轉(zhuǎn)換為Unicode字符ord(x)將一個(gè)字符轉(zhuǎn)換為它的整數(shù)值hex(x)將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)十六進(jìn)制字符串oct(x)將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)八進(jìn)制字符串2.5Python的對(duì)象和變量
變量存儲(chǔ)在內(nèi)存中的值。這就意味著在創(chuàng)建變量時(shí)會(huì)在內(nèi)存中開(kāi)辟一個(gè)空間。基于變量的數(shù)據(jù)類(lèi)型,解釋器會(huì)分配指定內(nèi)存,并決定什么數(shù)據(jù)可以被存儲(chǔ)在內(nèi)存中。因此,變量可以指定不同的數(shù)據(jù)類(lèi)型,這些變量可以存儲(chǔ)整數(shù),小數(shù)或字符。程序中存儲(chǔ)的所有數(shù)據(jù)都是對(duì)象。每一個(gè)對(duì)象都有身份、類(lèi)型和一個(gè)值。[學(xué)習(xí)目標(biāo)]1.了解對(duì)象的類(lèi)型與身份2.了解變量引用對(duì)象的含義及過(guò)程3.了解共享引用2.5.1對(duì)象的類(lèi)型與身份
對(duì)象的類(lèi)型用于描述對(duì)象的內(nèi)部表示及它支持的方法與操作。創(chuàng)建一個(gè)特定的對(duì)象,就認(rèn)為這個(gè)對(duì)象是該類(lèi)型的實(shí)例。一旦一個(gè)對(duì)象實(shí)例被創(chuàng)建,它的身份與類(lèi)型是不可改變的。如果對(duì)象的值是可改變的,則稱(chēng)對(duì)象為可變對(duì)象(mutable),當(dāng)然還有不可變對(duì)象(immutable)。如果對(duì)象包含對(duì)其它對(duì)象的引用,則將其稱(chēng)為容器或集合。
許多對(duì)象都有相應(yīng)的數(shù)據(jù)屬性與方法。屬性是與對(duì)象相關(guān)的值,而方法是可以施加在該對(duì)象上的執(zhí)行某些操作的函數(shù)。2.5.1對(duì)象的類(lèi)型與身份
對(duì)象的類(lèi)型與身份可以通過(guò)內(nèi)置函數(shù)來(lái)確定。
對(duì)象的類(lèi)型,指的是數(shù)據(jù)類(lèi)型,可以使用內(nèi)置函數(shù)type()查看。對(duì)象的身份實(shí)際是存儲(chǔ)單元,存儲(chǔ)單元可以使用id()取值。>>>a=1>>>id(a)1372182768id()表示對(duì)象在當(dāng)前電腦的存儲(chǔ)單元地址,每臺(tái)電腦地址不同,例中的結(jié)果1372182768僅供表明編者運(yùn)行該代碼時(shí)的存儲(chǔ)單元地址。2.5.2變量引用對(duì)象
在Python語(yǔ)言中,變量與對(duì)象的關(guān)系體現(xiàn)在引用上,所謂變量引用對(duì)象就是建立變量到對(duì)象的連接。
變量是由賦值語(yǔ)句創(chuàng)建的,而且是在第一次給這個(gè)變量名賦值時(shí)創(chuàng)建變量。創(chuàng)建對(duì)象的同時(shí)也建立了變量對(duì)對(duì)象的連接(引用)。如圖3-1所示??梢?jiàn),只要一條賦值語(yǔ)句就可實(shí)現(xiàn)這三件事。a=1,該語(yǔ)句,創(chuàng)建了整數(shù)對(duì)象1,創(chuàng)建了變量a,建立了變量a對(duì)整數(shù)對(duì)象1的引用。2.5.2變量引用對(duì)象變量的命名同樣遵守標(biāo)識(shí)符的命名規(guī)則。變量有自己的存儲(chǔ)空間,變量引用對(duì)象是該變量存儲(chǔ)了對(duì)象的內(nèi)存地址,而不是對(duì)象的值。但變量在進(jìn)行運(yùn)算和輸出時(shí),自動(dòng)使用它所引用的對(duì)象的值。一個(gè)變量一旦引用了一個(gè)對(duì)象,變量就是對(duì)象。從微觀上講,變量跟隨了它引用的對(duì)象的類(lèi)型,它的類(lèi)型可以不斷的變化;從宏觀上講,變量的類(lèi)型漂浮不定,可以視作變量沒(méi)有類(lèi)型,如例2-5-2所示。>>>a=1>>>a="hello"這是Python語(yǔ)言的動(dòng)態(tài)類(lèi)型機(jī)制2.5.3共享引用共享引用是指多個(gè)變量都引用同一對(duì)象,如圖2-1所示。Python3的六個(gè)標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型中:不可變數(shù)據(jù)(3個(gè)):Number(數(shù)字)、String(字符串)、Tuple(元組);可變數(shù)據(jù)(3個(gè)):List(列表)、Dictionary(字典)、Set(集合)。
對(duì)不可變對(duì)象來(lái)說(shuō),改變?cè)兞恳茫粫?huì)改變引用變量的值,如例2-5-3所示。
例2-5-3代碼,雖然改變了變量a的引用,但變量b仍然引用整數(shù)對(duì)象1。2.5.3共享引用
對(duì)于可變對(duì)象(如列表、字典這樣的容器類(lèi)對(duì)象),改變共享引用的一方變量,對(duì)另一方變量的引用是有影響的。例2-5-4代碼結(jié)果可以看出影響結(jié)果。>>>a=[1,2,3]>>>b=a>>>b.append(4)>>>b[1,2,3,4]>>>a[1,2,3,4]代碼中將a賦值給b,然后修改b的值,為b的值添加一個(gè)數(shù),怎么a也會(huì)跟著改變?2.5.3共享引用這其中的關(guān)鍵是理解可變對(duì)象與不可變對(duì)象。簡(jiǎn)單數(shù)據(jù)類(lèi)型是不可變對(duì)象。在之前所用的數(shù)字類(lèi)型中,不存在此類(lèi)共變問(wèn)題。重新執(zhí)行相關(guān)代碼,查看相關(guān)變量存儲(chǔ)單元,如例2-5-5所示。>>>a=1>>>b=a>>>a="hello"變量a重新賦值后,存儲(chǔ)單元地址改變,原來(lái)的地址因?yàn)樽兞縝還在引用,所以繼續(xù)保留。此時(shí)變量a和變量b已無(wú)關(guān)系。2.5.3共享引用對(duì)于可變對(duì)象,執(zhí)行相關(guān)代碼,查看相關(guān)變量存儲(chǔ)單元,如例2-5-6所示。>>>a=[1,2,3]>>>b=a>>>b.append(4)>>>id(b)32943960>>>id(a)32943960對(duì)可變對(duì)象來(lái)說(shuō),執(zhí)行相關(guān)的添加數(shù)據(jù)操作,數(shù)據(jù)值發(fā)生改變,但存儲(chǔ)單元并未改變。2.5.3共享引用Python中,賦值的本質(zhì)含義是引用,是引用相關(guān)存儲(chǔ)單元的數(shù)據(jù)。多個(gè)變量可以引用同一個(gè)存儲(chǔ)單元的數(shù)據(jù)。代碼中,變量a和變量b引用相同的存儲(chǔ)單元,所以無(wú)論通過(guò)變量a還是通過(guò)變量b,對(duì)存儲(chǔ)單元中的數(shù)據(jù)進(jìn)行修改,那另一個(gè)變量只是對(duì)存儲(chǔ)單元引用,因此值只能是修改后的值。對(duì)于可變對(duì)象,還有類(lèi)似引用的操作,如利用切片、函數(shù)或方法實(shí)現(xiàn)淺復(fù)制,深復(fù)制函數(shù)實(shí)現(xiàn)深復(fù)制,這些內(nèi)容將在后續(xù)章節(jié)中介紹2.6Python運(yùn)算符
對(duì)數(shù)據(jù)的變換稱(chēng)為運(yùn)算,表示運(yùn)算的符號(hào)稱(chēng)為運(yùn)算符,參與運(yùn)算的數(shù)據(jù)稱(chēng)為操作數(shù)。舉個(gè)簡(jiǎn)單的例子4+5=9。例子中,4和5被稱(chēng)為操作數(shù),"+"號(hào)為運(yùn)算符。本節(jié)主要說(shuō)明Python的運(yùn)算符。Python語(yǔ)言支持以下類(lèi)型的運(yùn)算符:算術(shù)運(yùn)算符比較(關(guān)系)運(yùn)算符賦值運(yùn)算符邏輯運(yùn)算符位運(yùn)算符成員運(yùn)算符身份運(yùn)算符2.6Python運(yùn)算符[學(xué)習(xí)目標(biāo)]1.了解并掌握算術(shù)運(yùn)算符的運(yùn)用2.了解并掌握比較運(yùn)算符的運(yùn)用3.了解并掌握賦值運(yùn)算符的運(yùn)用4.了解并掌握位運(yùn)算符的運(yùn)用5.了解并掌握邏輯運(yùn)算符的運(yùn)用6.了解并掌握成員運(yùn)算符的運(yùn)用7.了解并掌握身份運(yùn)算符的運(yùn)用8.熟悉運(yùn)算符優(yōu)先級(jí)2.6.1算術(shù)運(yùn)算符算術(shù)運(yùn)算符主要用于計(jì)算,常用的加減乘除(+、-、*、/)都屬于算術(shù)運(yùn)算符。所有的數(shù)字對(duì)象可以使用如表2-6所示的算術(shù)運(yùn)算,用運(yùn)算符、圓括號(hào)將對(duì)象、變量、函數(shù)等連接起來(lái)的式子稱(chēng)為數(shù)學(xué)表達(dá)式。在表中,假定a、b為對(duì)象,如表2-6所示:運(yùn)算意義描述運(yùn)算意義描述a+b加法a**b乘方(ab)a–b減法a%b取余數(shù)(amodb)a*b乘法+a一元加法a/b除法-a一元減法a//b截取除法
2.6.1算術(shù)運(yùn)算符1.截取除法(//)的結(jié)果是整數(shù),并且整數(shù)和浮點(diǎn)數(shù)均可應(yīng)用。2.除法(/):在Python2.X中,如果操作數(shù)是整數(shù),除法結(jié)果取整數(shù),但在Python3.X中,結(jié)果是浮點(diǎn)數(shù)。3.對(duì)浮點(diǎn)數(shù)來(lái)說(shuō),取余運(yùn)算的結(jié)果是”a//b”的浮點(diǎn)數(shù)余數(shù),即”a–(a//b)*b”。4.對(duì)于復(fù)數(shù),取余和截取除法是無(wú)效的。在算術(shù)表達(dá)式中,運(yùn)算符的優(yōu)先級(jí)(分4級(jí))是:一元運(yùn)算符、乘方、(乘法、除法、包括截取除法和取余)、加減法。注意冪運(yùn)算符**,如果左側(cè)有正負(fù)號(hào),那么冪運(yùn)算符優(yōu)先,如果右側(cè)有正負(fù)號(hào),那么一元運(yùn)算符優(yōu)先。2.6.1算術(shù)運(yùn)算符算術(shù)運(yùn)算符的操作比較簡(jiǎn)單。定義變量a為5,變量b為3,如表2-7所示:運(yùn)算符描述實(shí)例+加-兩個(gè)對(duì)象相加a+b輸出結(jié)果8-減-得到負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù)a-b輸出結(jié)果2*乘-兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次的字符串a(chǎn)*b輸出結(jié)果15/除-x除以ya/b輸出結(jié)果1.6666666666666667%取模-返回除法的余數(shù)a%b輸出結(jié)果2//取整除-返回商的整數(shù)部分a//b輸出結(jié)果1**冪-返回x的y次冪a**b為5的3次方,輸出結(jié)果1252.6.2比較運(yùn)算符關(guān)系運(yùn)算使用下表的運(yùn)算符,運(yùn)算結(jié)果是True或False。關(guān)系運(yùn)算in表示一個(gè)對(duì)象是否在一個(gè)集合中(這里說(shuō)的集合是一個(gè)廣義概念,包括列表,元組、字符串等),當(dāng)然運(yùn)算結(jié)果也是True或False,如表2-8所示:運(yùn)算意義描述運(yùn)算意義描述a<b小于a>=b大于等于a<=b小于等于a==b等于a>b大于a!=b不等于xin<集合>x在集合中?2.6.2比較運(yùn)算符1.對(duì)于比較運(yùn)算符,可以有更復(fù)雜的寫(xiě)法,如:”a<b<c”,這相當(dāng)于”a<bandb<c”,又如:”a<b>c”,相當(dāng)于”a<bandb>c”,”a==b>c”相當(dāng)于”a==bandb>c”。2.不允許對(duì)復(fù)數(shù)進(jìn)行比較。3.只有當(dāng)操作數(shù)是同一類(lèi)型時(shí),比較才有效。對(duì)于內(nèi)置數(shù)字對(duì)象,當(dāng)兩個(gè)操作數(shù)類(lèi)型不一致時(shí),Python將進(jìn)行類(lèi)型的強(qiáng)制轉(zhuǎn)換:當(dāng)操作數(shù)之一為浮點(diǎn)數(shù),則將另一個(gè)操作數(shù)也轉(zhuǎn)換為浮點(diǎn)。2.6.2比較運(yùn)算符比較運(yùn)算符的含義如表2-9所示運(yùn)算符描述實(shí)例==等于-比較對(duì)象是否相等(a==b)返回False。!=不等于-比較兩個(gè)對(duì)象是否不相等(a!=b)返回true.<>
不等于-比較兩個(gè)對(duì)象是否不相等(a<>b)返回true。這個(gè)運(yùn)算符類(lèi)似!=。>
大于-返回x是否大于y(a>b)返回False。<
小于-返回x是否小于y。所有比較運(yùn)算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價(jià)。注意,這些變量名的大寫(xiě)。(a<b)返回true。>=大于等于-返回x是否大于等于y。(a>=b)返回False。<=小于等于-返回x是否小于等于y。(a<=b)返回true。2.6.2比較運(yùn)算符關(guān)系運(yùn)算符的優(yōu)先級(jí)不分級(jí),6個(gè)運(yùn)算符<、<=、>、>=、==和!=屬于同一級(jí)。在這一點(diǎn)上,Python語(yǔ)言與其它語(yǔ)言不同(其它語(yǔ)言一般定義<、<=、>和>=是同一級(jí),==和!=是同一級(jí))6個(gè)關(guān)于數(shù)字的關(guān)系運(yùn)算符比運(yùn)算符in的優(yōu)先級(jí)高。通過(guò)實(shí)例演示比較運(yùn)算符的操作,如例2-6-2所示。當(dāng)操作數(shù)是浮點(diǎn)數(shù)時(shí),注意浮點(diǎn)數(shù)有有效位(15位)的問(wèn)題,如例2-6-3所示。2.6.3賦值運(yùn)算符Python賦值運(yùn)算符的操作比較簡(jiǎn)單,和其他語(yǔ)言一樣,使用“=”號(hào),假設(shè)變量a為10,變量b為20,如表所示:運(yùn)算符描述實(shí)例=簡(jiǎn)單的賦值運(yùn)算符c=a+b將a+b的運(yùn)算結(jié)果賦值為c+=加法賦值運(yùn)算符c+=a等效于c=c+a-=減法賦值運(yùn)算符c-=a等效于c=c-a*=乘法賦值運(yùn)算符c*=a等效于c=c*a/=除法賦值運(yùn)算符c/=a等效于c=c/a%=取模賦值運(yùn)算符c%=a等效于c=c%a**=冪賦值運(yùn)算符c**=a等效于c=c**a//=取整除賦值運(yùn)算符c//=a等效于c=c//a2.6.4位運(yùn)算符移位和按位邏輯運(yùn)算符僅能用于整數(shù)。它們的優(yōu)先級(jí)(分5級(jí))是:按位求反、左右移位、按位與、按位異或、按位或。按位運(yùn)算符是把數(shù)字看作二進(jìn)制來(lái)進(jìn)行計(jì)算的。如表2-11所示:運(yùn)算意義描述運(yùn)算意義描述a<<b左移a|b按位或a>>b右移a^b按位異或a&b按位與~a按位求反2.6.4位運(yùn)算符Python中的移位和按位邏輯運(yùn)算假定整數(shù)以二進(jìn)制補(bǔ)碼形式表示,且符號(hào)位可以向左無(wú)限擴(kuò)展。設(shè)a=60,b=13,按位運(yùn)算法則,如表2-12所示:如例2-6-5所示。運(yùn)算符描述實(shí)例&按位與運(yùn)算符(a&b)輸出結(jié)果12,二進(jìn)制解釋?zhuān)?0001100|按位或運(yùn)算符(a|b)輸出結(jié)果61,二進(jìn)制解釋?zhuān)?0111101^按位異或運(yùn)算符(a^b)輸出結(jié)果49,二進(jìn)制解釋?zhuān)?0110001~按位取反運(yùn)算符(~a)輸出結(jié)果-61,二進(jìn)制解釋?zhuān)?1000011,在一個(gè)有符號(hào)二進(jìn)制數(shù)的補(bǔ)碼形式。<<
左移動(dòng)運(yùn)算符a<<2輸出結(jié)果240,二進(jìn)制解釋?zhuān)?1110000>>
右移動(dòng)運(yùn)算符a>>2輸出結(jié)果15,二進(jìn)制解釋?zhuān)?00011112.6.5邏輯運(yùn)算符Python語(yǔ)言支持邏輯運(yùn)算符,邏輯運(yùn)算符只有3個(gè),它們的優(yōu)先級(jí)(分3級(jí))是:not、and、or。用邏輯運(yùn)算符描述的表達(dá)式稱(chēng)邏輯表達(dá)式或布爾表達(dá)式。nota:如果a為False,則返回1,否則返回0。aandb:如果a為False,則返回a,否則返回b。aorb:如果a為False,則返回b,否則返回a。2.6.5邏輯運(yùn)算符以下假設(shè)變量a為10,變量b為20,如表2-13所示:邏輯運(yùn)算符中and,or需要和常用的and、or進(jìn)行區(qū)分,不要單純從“與”、“或”上進(jìn)行理解,需要結(jié)合Python中數(shù)字的真假值進(jìn)行計(jì)算。Python中指數(shù)字0和null表示False,非0數(shù)字和非空(null)都為真。注意邏輯表達(dá)式的輸出值,如2-6-6所示。運(yùn)算符描述and布爾"與"-如果x為False,xandy返回False,否則它返回y的計(jì)算值。or布爾"或"-如果x是True,它返回True,否則它返回y的計(jì)算值。not布爾"非"-如果x為T(mén)rue,返回False。如果x為False,它返回True。2.6.6成員運(yùn)算符除了以上的一些運(yùn)算符之外,Python還支持成員運(yùn)算符,測(cè)試實(shí)例中包含了一系列的成員。成員運(yùn)算符只能用在包含成員的對(duì)象中,包括字符串、列表或元
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- D打印技術(shù)在個(gè)性化教育資源的開(kāi)發(fā)考核試卷
- 期刊出版論文的開(kāi)源出版趨勢(shì)考核試卷
- 教育音像制品策劃與制作考核試卷
- 文具行業(yè)個(gè)性化服務(wù)考核試卷
- 工業(yè)園區(qū)電動(dòng)汽車(chē)充電需求分析考核試卷
- 健康生活方式與營(yíng)養(yǎng)健康考核試卷
- 個(gè)人培訓(xùn)課件大全
- 買(mǎi)杭州新房合同范本
- 私人店鋪?zhàn)赓U合同范本
- 2025屆吉林省吉林地區(qū)高三上學(xué)期二模英語(yǔ)試題及答案
- 2024轉(zhuǎn)向節(jié)設(shè)計(jì)標(biāo)準(zhǔn)
- 一年級(jí)《讀讀兒歌和童謠》線上閱讀測(cè)試專(zhuān)項(xiàng)測(cè)試題附答案
- 強(qiáng)化學(xué)習(xí)在支付風(fēng)控
- 工商企業(yè)管理畢業(yè)論文范文(4篇)
- 重癥醫(yī)學(xué)科相關(guān)技術(shù)規(guī)范與操作規(guī)程
- DB11∕T 1326-2016 中小學(xué)校晨午檢規(guī)范
- 北師大版(三起)(2024)三年級(jí)上冊(cè)英語(yǔ)Unit 2 School life單元測(cè)試卷(含答案)
- 兩癌篩查宣傳課件
- 《跨境直播運(yùn)營(yíng)》課件-跨境直播的概念和發(fā)展歷程
- 施工現(xiàn)場(chǎng)安全隱患檢查表
- DLT5461-2013 火力發(fā)電廠施工圖設(shè)計(jì)文件深度規(guī)定(第1-16部分)
評(píng)論
0/150
提交評(píng)論