Python对象类型
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Python對(duì)象類型
Python進(jìn)階(二)——Python對(duì)象類型
上一章中我們主要講了Python的安裝與Python基本命令行,IDLE的應(yīng)用。本章中我們將講述Python的對(duì)象類型,包括數(shù)字、字符串、列表、字典、元組、文件以及用戶自定義類對(duì)象。
1.總覽——Python程序可以分解為模塊、語(yǔ)句、表達(dá)式和對(duì)象
- 程序有模塊構(gòu)成(模塊的概念上一章中提過(guò))
- 模塊包含語(yǔ)句
- 語(yǔ)句包含表達(dá)式
- 表達(dá)式建立并處理對(duì)象
2.Python核心數(shù)據(jù)類型
表2.1 ?Python內(nèi)置對(duì)象類型
以上是Python內(nèi)置對(duì)象基本類型,當(dāng)然不完全。比如我們?cè)诰帉?xiě)網(wǎng)絡(luò)腳本時(shí),可以使用套接字對(duì)象,其他類型的對(duì)象往往通過(guò)導(dǎo)入或使用模塊建立。
我們將表2.1中所列類型為Python核心類型。
有一點(diǎn)需要注意:
python中沒(méi)有類型聲明(這點(diǎn)有點(diǎn)兒像matlab),運(yùn)行的表達(dá)式?jīng)Q定了建立對(duì)象的類型
在表2.1中有兩個(gè)特殊的類型,一個(gè)是列表[],一個(gè)是字典{},列表提供了其他對(duì)象的有序集合,而字典是通過(guò)鍵值存儲(chǔ)對(duì)象的(類似STL::map),列表和字典都可以實(shí)現(xiàn)嵌套,后面會(huì)講。
3.Python數(shù)據(jù)類型——數(shù)字
- 一般地?cái)?shù)學(xué)操作和matlab中沒(méi)有什么區(qū)別:
[cpp]?view plaincopy
- 這里注意一下第二個(gè)命令2**100(2的100次方),結(jié)果顯示的時(shí)候最后出來(lái)的L是由于類型強(qiáng)制轉(zhuǎn)換為long(長(zhǎng)整型)
- 除了表達(dá)式,python還可以導(dǎo)入一些常用的數(shù)學(xué)模塊,比如math和random:
- 這里呢,提醒一下大家,在Python IDLE和 Python Shell中敲math.xxx是出不來(lái)提示的,而pythonwin中會(huì)有提示,類似C++封裝好的類:
- 除此之外,Python還包含負(fù)數(shù)、固定精度十進(jìn)制數(shù)、集合等數(shù)據(jù)、、數(shù)字類型,還有第三方開(kāi)源擴(kuò)展領(lǐng)域包含矩陣和向量等類型,感興趣的朋友可以查查看。
4.Python數(shù)據(jù)類型——字符串
- python中,字符串是一個(gè)單個(gè)字符的串序列,其他序列類型還有列表和元組。
- 以下是python中對(duì)字符創(chuàng)的常見(jiàn)操作:
- Python的字符串操作有個(gè)特點(diǎn),你不能通過(guò)對(duì)某一位進(jìn)行賦值而改變字符串,但可以通過(guò)建立一個(gè)新字符串并以同一個(gè)變量名對(duì)其賦值。因?yàn)镻ython會(huì)自動(dòng)清理舊的對(duì)象,如下圖所示:
- 除此之外還有一些類型特定的方法,如replace, find方法
- 這里,因?yàn)?span style="color:rgb(255,0,0)">字符串具有不可變性,因此replace操作并不會(huì)改變?cè)撟址?#xff0c;而是創(chuàng)建一個(gè)新的字符串作為結(jié)果。
- 這里要提醒下,盡管序列操作是通用的,但方法不通用(字符串方法只能用于字符串操作)。
- 對(duì)于字符串的其他方法呢,我們可以用上一章中講過(guò)的dir()函數(shù)和help( )函數(shù):
- dir函數(shù)給出了所有方法的名稱:
- help函數(shù)給出了每個(gè)函數(shù)的具體definition:
- 小技巧:python字符串有一個(gè)語(yǔ)法,在一對(duì) 三個(gè)單引號(hào)(or雙引號(hào))之間的內(nèi)容保持其格式。好熟悉的方法?是的!類似HTML中的<pre>標(biāo)簽:
- 模式匹配,需要引入re模塊:
- 這里大家請(qǐng)看match函數(shù),其第一部分定義了模式,后一部分是要匹配的文本content。
- 比如這個(gè)模式match = re.match('Hello[\t]*(.*)world','HelloPython world'),就是以Hello開(kāi)頭,連上n個(gè)'\t',再接著任意字符并將其保存至匹配的group中,最后以‘world’結(jié)尾的模式在'Hello?Python world'中匹配的結(jié)果。
5.Python數(shù)據(jù)類型——列表
- python列表是一個(gè)與任意類型的對(duì)象位置相關(guān)的有序集合。列表最大的特點(diǎn)就是,沒(méi)有固定類型的約束:
- 特定類型的操作:與string不同,list是可變的(相對(duì)于字符串的不可變性而言),但是有的方法是有針對(duì)性類型的,比如append函數(shù)只接受字符串:
- 列表嵌套
- 列表解析
6.Python數(shù)據(jù)類型——字典
- 首先看一下字典的一般賦值方式:
- 嵌套:
- 鍵的排序:for循環(huán)
- 迭代:
- if測(cè)試:
在后面我們還會(huì)講try語(yǔ)句,一個(gè)捕獲并從異常中恢復(fù)的語(yǔ)句
7.Python數(shù)據(jù)類型——元組
元組的最大特點(diǎn)是不可變,換言之,元組是不可變的序列。
元組得不可變性約束決定了某些特定安全性要求下可以使用。
8.Python數(shù)據(jù)類型——文件
- Python中的文件創(chuàng)建與編輯方式:
- 此時(shí)桌面上創(chuàng)建了一個(gè)a.txt:
- python默認(rèn)文件打開(kāi)方式為讀'r',并可讀取文件內(nèi)容如下:
- 當(dāng)然,除了open函數(shù),python還有高級(jí)的文件類工具:pipes、fifos、sockets、keyed-access files等。例如文件描述符(descriptor file)支持文件鎖定和其他底層工具,而sockets提供網(wǎng)絡(luò)和進(jìn)程間接口。
9.用戶自定義類
一個(gè)簡(jiǎn)單的用戶自定義類,有相應(yīng)的attribute和method:
- 類中成員默認(rèn)類型是public的(雖然python中我們還沒(méi)有介紹成員變量的類型),“self”對(duì)象時(shí)我們把這叫做面向?qū)ο竽P偷脑?#xff0c;即一個(gè)函數(shù)總有一個(gè)隱含的對(duì)象,這和C++非常相似。
總結(jié)
以上是生活随笔為你收集整理的Python对象类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 斯坦福大学机器学习第四课“逻辑回归(Lo
- 下一篇: Qt, Python(一)