Python入門篇之物件類型

來源:互聯網
上載者:User
Python使用物件模型來儲存資料。構造任何類型的值都是一個對象

所有的Python對象都擁有三個特性:身份、類型、值

身份:

每一個對象都有一個唯一的身份來標誌自己,任何對象的身份可以使用內建函數id()來得到。這個值可以被認為是該對象的記憶體位址

類型:

對象的類型決定了該對象可以儲存什麼類型的值,可以進行怎樣的操作,以及遵循什麼樣的規則,可以使用內建函數type()查看Python對象的類型:

代碼如下:


>>> type([1,2])

>>> type(24)

>>> type({1,2,3})

>>> type('a string')

type()返回的是對象而不是簡單的字串。

值:對象表示的資料項目

以上的三個特性在對象建立的時候就被賦值,除此之外,其他兩個特性都是唯讀

標準類型/基礎資料類型:

數字、整型、布爾型、長整形、浮點型、複數型、字串、列表、元組、字典

其他內建類型:

類型、Null對象(None)、檔案、集合/固定集合、函數/方法、模組、類

None,Python的Null對象

Python有一個特殊的類型,稱為Null對象或者NoneType,只有一個值:None,它不支援任何運算也沒有任何內建的方法,類似於C語言的void,None類型的值

和C中的Null值非常相似

None沒有什麼有用的屬性,它的布爾值總是False

布爾值

所有標準對象均可以用於布爾測試,同類型的對象之間可以比較大小。每一個對象天生具有布爾True或false值

Null 物件、值為0的任一數字或Null對象None的布爾值都是False

下列對象的布爾值都是False:

None
False(布爾類型)
所有的值為0的數
0(整型)
(浮點型)
0L(長整型)
0.0+0.0j(複數)
“”(Null 字元串)
[](空列表)
()(空元組)
{}(空字典)
值不是上面列出來的任何值的對象的布爾值都是True

標準類型運算子:

比較子用來判斷同類型對象是否相等,所有的內建類型均支援比較運算,比較運算返回布爾值True或False

代碼如下:


>>> 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

多個比較操作可以在同一行上進行,求值順序為從左至右.例如:

代碼如下:


>>> 3<4<5 #等價於 (3<4)and(4<5)
True
>>> 4>3==3 #等價於(4>3)and(3==3)
True
>>> 4<3<5!=2<7
False

標準類型值比較子:

對象身份比較

每個對象都天生具有一個計數器,記錄它自己的引用次數。這個數目表示有多少個變數指向該對象

Python提供了is和is not運算子來測試兩個變數是否指向同一個對象

a is b 等價於 id(a)==id(b)

代碼如下:


>>> foo2=foo1
>>> foo1 is foo2
True
>>> foo1 is not foo2
False
>>> id(foo1)==id(foo2)
True
>>>

布爾類型

布爾邏輯運算子and,or,not都是Python關鍵字,這些運算子的優先順序按從高到低的順序如下:

標準類型布林運算子:

代碼如下:


>>> 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

標準類型內建函數

Python提供了一些內建函數用於這些基本物件類型:

cmp(), repr(), str(), type()和等同於repr()函數的單反引號('')運算子

type()接受一個對象作為參數,並返回它的類型。它的傳回值是一個類型對象。

代碼如下:


>>> type(4)

>>> type('hello!')

>>> type(type(4))

cmp()用於比較兩個對象obj1和obj2,如果obj1obj2返回1,如果obj1==obj2返回0,行為類似於C中的strcmp()函數,比較是在對象之間進行的

代碼如下:


>>> 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()(及''運算子)

內建函數str()和repr()或反引號運算子('')可以方便的以字串的方式獲得對象的內容、類型、數值屬性等資訊。

str()函數得到的字串可讀性好,而repr()函數得到的字串通常可以用來重新獲得該對象

代碼如下:


>>> str(4.53-2j)
'(4.53-2j)'
>>> str(1)
'1'
>>> str(2e10)
'20000000000.0'

>>> str([0,5,9,9])
'[0, 5, 9, 9]'
>>> repr([0,5,9,9])
'[0, 5, 9, 9]'
>>> '[0,5,9,9]'
'[0,5,9,9]'

str()和repr()和''運算在特性和功能方面都非常的相似,repr()和''做的事情完全一樣,返回的是一個對象的官方字串表示,可以通過求值運算(使用eval()內建函數)重新得到該對象,但是str()函數則有所不同,它可以產生一個對象的可讀性好的字串表示,返回結果無法用於eval()求值,但是很適合用於print語句輸出。

標準類型運算子和內建函數

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.