1.python使用對象模型來存儲數據。構造任何類型的值都是一個對象。”儘管python被當成一種面向對象的腳本的編程語言“,但你完全能夠寫出不使用任何類和實例的腳本。 python對象都擁有三個特性:(1)身份、(2)類型、(3)值、 (1)身份:每個對象都有一個唯一的身份來標識自己。可以使用內建 ...
1.python使用對象模型來存儲數據。構造任何類型的值都是一個對象。”儘管python被當成一種面向對象的腳本的編程語言“,但你完全能夠寫出不使用任何類和實例的腳本。
python對象都擁有三個特性:(1)身份、(2)類型、(3)值、
(1)身份:每個對象都有一個唯一的身份來標識自己。可以使用內建函數 id()得到。
(2)類型:對象的類型,決定了該對象可以保存的類型值。
(3)值:對象表示的數據項。
2.標準類型。
數字(分為幾個子類型,中有三個是整形)
Integer (整形)
Boolean(布爾型)
long Integer (長整型)
complex number(複數型)
string (字元串)
list (列表)
dictionary (字典)
tuple (元組)
3.其他內建類型。
類型對象和type()類型對象。
註:None沒有什麼可用的屬性,他的布爾值總是false。
4.內部類型。
代碼
幀
跟蹤記錄
切片
省略
5.代碼對象。
(1)幀對象。
幀對象包含python解釋器在運行時所需要的所有信息。
(2)跟蹤記錄對象。
當代碼出錯,python會直接直接引發異常,並退出。
6.標準類型操作符。
(1)對象值比較。
>>>print([3,4]==[4,3]) False >>>print([3,4]==[3,4]) True
我們會從註意到比較操作是針對對象的值進行的,也就是比較的是對象的值,而不是對象本身。
(2)對象身份比較。
作為對值比較的補充,Python也支持對像本身的比較。對象可以被賦值到另一個變數(通過引用)。
因為每個變數都指向同一個(共用的)數據對象,只要任何一個引用發生改變,該對象的其他引用也會隨即發生改變。
例1:foo1和foo2指向相同的對象。
foo1=foo2=4.3
從值的角度看,這條語句只是一個多重賦值,將4.3這個值賦給了foo1和foo2這兩個變數。
不過他還有另一層含義。事實是一個值為4.3的數字對象被創建,然後這個對象的引用被賦值給foo1和foo2,結果就是foo1和foo2指向同一個對象。
例2:foo1和foo2指向相同的對象
foo1=4.3
foo2=foo1
例3:foo1和foo2指向不同的對象。
foo1=4.3
foo2=1.3+3.0
註意:整型對象和字元串對象是不可變對象,所以python會高效的緩存他們。
>>>a=1,b=1 >>>id(a) 8402824 >>>id(b) 8402824 >>> >>>c=1.0 >>>id(c) 8651220 >>>d=1.0 >>>id(d) 8651204
7.布爾類型。
布爾邏輯操作符and,or,和not都是python關鍵字。
>>>x,y=3.1415926,-1024 >>>x<5.0 True >>>not(x<5.0) False >>>(x<5.0) or (x>2.71828) True >>>(x<5.0) and (y>2.71828) False >>>not (x is y) True
8.標準類型內建函數。
(1)type():接受一個對象作為它的參數,並返回它的類型。(返回值是一個類型對象)
>>>type(4) <type,'int'> >>> >>>type("hello world") <type,'string'> >>> >>>type(type(4)) <type,'type'>
(2)cmp():用以比較兩個對象,obj1和obj2。如果obj1<obj2則返回一個負整型。若obj1>obj2則返回一個正整形。若obj1=obj2則返回0。他的行為非常類似於c語言中的strcmp()函數,比較在對象之間進行,不管對象是不是用戶自定義的對象。
>>>a,b=-4,12 >>>cmp(a,b) -1 >>>cmp(b,a) 1 >>>b=-4 >>>cmp(a,b) 0