Python使用對(duì)象模型來(lái)存儲(chǔ)數(shù)據(jù)。構(gòu)造任何類(lèi)型的值都是一個(gè)對(duì)象 所有的Python對(duì)象都擁有三個(gè)特性:身份、類(lèi)型、值 身份: 每一個(gè)對(duì)象都有一個(gè)唯一的身份來(lái)標(biāo)志自己,任何對(duì)象的身份可以使用內(nèi)建函數(shù)id()來(lái)得到。這個(gè)值可以被認(rèn)為是該對(duì)象的內(nèi)存地址 類(lèi)型: 對(duì)象的類(lèi)型決定了該對(duì)象可以保存什么類(lèi)型的值,可以進(jìn)行怎樣的操作,以及遵循什么樣的規(guī)則,可以使用內(nèi)建函數(shù)type()查看Python對(duì)象的類(lèi)型: 復(fù)制代碼 代碼如下: >>> type([1,2]) <type 'list'> >>> type(24) <type 'int'> >>> type({1,2,3}) <type 'set'> >>> type('a string') <type 'str'>
type()返回的是對(duì)象而不是簡(jiǎn)單的字符串。 值:對(duì)象表示的數(shù)據(jù)項(xiàng) 以上的三個(gè)特性在對(duì)象創(chuàng)建的時(shí)候就被賦值,除此之外,其他兩個(gè)特性都是只讀的 標(biāo)準(zhǔn)類(lèi)型/基礎(chǔ)數(shù)據(jù)類(lèi)型: 數(shù)字、整型、布爾型、長(zhǎng)整形、浮點(diǎn)型、復(fù)數(shù)型、字符串、列表、元組、字典 其他內(nèi)建類(lèi)型: 類(lèi)型、Null對(duì)象(None)、文件、集合/固定集合、函數(shù)/方法、模塊、類(lèi) None,Python的Null對(duì)象 Python有一個(gè)特殊的類(lèi)型,稱(chēng)為Null對(duì)象或者NoneType,只有一個(gè)值:None,它不支持任何運(yùn)算也沒(méi)有任何內(nèi)建的方法,類(lèi)似于C語(yǔ)言的void,None類(lèi)型的值 和C中的Null值非常相似 None沒(méi)有什么有用的屬性,它的布爾值總是False 布爾值 所有標(biāo)準(zhǔn)對(duì)象均可以用于布爾測(cè)試,同類(lèi)型的對(duì)象之間可以比較大小。每一個(gè)對(duì)象天生具有布爾True或false值 空對(duì)象、值為0的任意數(shù)字或Null對(duì)象None的布爾值都是False 下列對(duì)象的布爾值都是False: None 標(biāo)準(zhǔn)類(lèi)型運(yùn)算符: 比較運(yùn)算符用來(lái)判斷同類(lèi)型對(duì)象是否相等,所有的內(nèi)建類(lèi)型均支持比較運(yùn)算,比較運(yùn)算返回布爾值True或False 復(fù)制代碼 代碼如下: >>> 2==2 True >>> 2.34<=3.44 True >>> 'abc'=='xyz' False >>> 'xyz'>'abc' True >>> 'xyz'<'abc' False >>> [3,'abc']==['abc',3] False >>> [3,'abc']==[3,'abc'] True
多個(gè)比較操作可以在同一行上進(jìn)行,求值順序?yàn)閺淖蟮接?例如: 復(fù)制代碼 代碼如下: >>> 3<4<5 #等價(jià)于 (3<4)and(4<5) True >>> 4>3==3 #等價(jià)于(4>3)and(3==3) True >>> 4<3<5!=2<7 False
標(biāo)準(zhǔn)類(lèi)型值比較運(yùn)算符: 對(duì)象身份比較 每個(gè)對(duì)象都天生具有一個(gè)計(jì)數(shù)器,記錄它自己的引用次數(shù)。這個(gè)數(shù)目表示有多少個(gè)變量指向該對(duì)象 Python提供了is和is not運(yùn)算符來(lái)測(cè)試兩個(gè)變量是否指向同一個(gè)對(duì)象 a is b 等價(jià)于 id(a)==id(b) 復(fù)制代碼 代碼如下: >>> foo2=foo1 >>> foo1 is foo2 True >>> foo1 is not foo2 False >>> id(foo1)==id(foo2) True >>>
布爾類(lèi)型 布爾邏輯運(yùn)算符and,or,not都是Python關(guān)鍵字,這些運(yùn)算符的優(yōu)先級(jí)按從高到低的順序如下: 標(biāo)準(zhǔn)類(lèi)型布爾運(yùn)算符: 復(fù)制代碼 代碼如下: >>> x,y=3.1415926,-1024 >>> x<5.0 True >>> not(x<5.0) False >>> (x<5.0) or (y>2.71828) True >>> (x<5.0) and (y>2.71828) False >>> not(x is y) True
標(biāo)準(zhǔn)類(lèi)型內(nèi)建函數(shù) Python提供了一些內(nèi)建函數(shù)用于這些基本對(duì)象類(lèi)型: cmp(), repr(), str(), type()和等同于repr()函數(shù)的單反引號(hào)('')運(yùn)算符 type()接受一個(gè)對(duì)象作為參數(shù),并返回它的類(lèi)型。它的返回值是一個(gè)類(lèi)型對(duì)象。 復(fù)制代碼 代碼如下: >>> type(4) <type 'int'> >>> type('hello!') <type 'str'> >>> type(type(4)) <type 'type'>
cmp()用于比較兩個(gè)對(duì)象obj1和obj2,如果obj1<obj2返回-1,如果obj1>obj2返回1,如果obj1==obj2返回0,行為類(lèi)似于C中的strcmp()函數(shù),比較是在對(duì)象之間進(jìn)行的 復(fù)制代碼 代碼如下: >>> a,b=-4,12 >>> cmp(a,b) -1 >>> cmp(b,a) 1 >>> b=-4 >>> cmp(a,b) 0 >>> a,b='abc','xyz' >>> cmp(a,b) -1 >>> cmp(b,a) 1 >>> b='abc' >>> cmp(a,b) 0
str()和repr()(及''運(yùn)算符) 內(nèi)建函數(shù)str()和repr()或反引號(hào)運(yùn)算符('')可以方便的以字符串的方式獲得對(duì)象的內(nèi)容、類(lèi)型、數(shù)值屬性等信息。 str()函數(shù)得到的字符串可讀性好,而repr()函數(shù)得到的字符串通常可以用來(lái)重新獲得該對(duì)象 復(fù)制代碼 代碼如下: >>> str(4.53-2j) '(4.53-2j)' >>> str(1) '1' >>> str(2e10) '20000000000.0'
>>> str([0,5,9,9])
str()和repr()和''運(yùn)算在特性和功能方面都非常的相似,repr()和''做的事情完全一樣,返回的是一個(gè)對(duì)象的官方字符串表示,可以通過(guò)求值運(yùn)算(使用eval()內(nèi)建函數(shù))重新得到該對(duì)象,但是str()函數(shù)則有所不同,它可以生成一個(gè)對(duì)象的可讀性好的字符串表示,返回結(jié)果無(wú)法用于eval()求值,但是很適合用于print語(yǔ)句輸出。 標(biāo)準(zhǔn)類(lèi)型運(yùn)算符和內(nèi)建函數(shù) |
|