Python的數據類型
標準類型
- Integer整型 0
- Boolean布爾型 False
- Long integer長整型 0L
- Floating point real number浮點型 0.0
- Complex number復數型 0.0+0.0j
- String字符串 ""
- List列表 []
- Tuple元祖 ()
- Dictionary字典 {}
其他內建類型
- 類型(type)
- Null對象(None)
- 文件
- 集合/固定集合
- 函數/方法
- 模塊
- 類
內部類型
- 代碼
- 幀
- 跟蹤記錄
- 切片
- 省略
- Xrange
標準類型——Integer 整型 和Long integer長整型
整型: -2147483648 ~ 21474836487 (32bit機器上)
2^64次方 (這個和java和C不太一樣,對于java和C來說整型不管是32bit還是64bit都只占用4個字節)
長整型:不管是32bit還是64bit,他的長度只取決于機器支持的虛擬內存的大小
標準類型——雙精度浮點型
python里面沒有float類型,python認為float類型的性價比不高,所以只支持double類型,如果需要使用精確的浮點型可以引用decimal模塊。
每個浮點型占用8個字節,11位用于表示指數,1位用于表示符號,52位用于表示底
標準類型——復數
復數由一個實數和一個虛數組成
python里面的復數是這樣表示的:
- 虛數不能單獨存在,他們總是和一個值為0.0的實數部分一起來構成一個復數
- 復數由實數部分和虛數部分構成
- 表示虛數的語法:real + imagj
- 實數部分和虛數部分都是浮點型
- 虛數部分必須有后綴 j或者J
復數的內建屬性
conjugate()獲得該復數的共軛復數對象
| 屬性| 描述|
| -- |:--:|
| num.real | 實數 |
| num.imag | 虛數 |
| num.conjugate() | 返回該復數的共軛復數 |
標準類型——Boolean布爾型
操作符 | 功能 |
---|---|
not expr | 邏輯非 |
expr and expr | 邏輯與 |
expr or expr | 邏輯或 |
其他內建類型——類型(type)
類型是保存對象一系列固有行為和特性的類型,所以python里面講類型也定義成了對象。
我們可以通過type()函數得到特定的對象的類型信息
exp:type(54)
type(type(54))
類型對象的類型是所有python類型的根和所有python標準類的默認元類。
其他內建類型——Null對象(None)
None不支持任何運算,也沒有任何的內建方法。通C語言里面的Null值。
內部類型——代碼
代碼對象是編譯后的pyhton代碼片段,是可執行對象,通過調用內部函數complie()可以得到代碼對象,代碼對象可以被exec命令或者eval()內建函數執行。
代碼對象其實是函數的一個屬性,函數出了有代碼對象的屬性之外還有一些其他函數必須的屬性(包括函數名,文檔字符串,默認參數,以及全局命名空間等等)
內部類型——幀
幀對象代表Python的執行棧幀,幀對象包含python解釋器在運行時所需要知道的全部信息,他的屬性包括向上一幀的鏈接,正在被執行的代碼對象,以及本地和全局名稱空間字典及當前指令等。每次函數調用都會產生一個新的幀,每一個幀對象都會相應的創建一個C棧幀。用到幀對象的一個地方是跟蹤記錄對象。
內部類型——跟蹤記錄
當異常發生的時候,一個包含針對異常的棧跟蹤信息的跟蹤記錄對象會被創建,如果異常有自己的處理程序,處理程序就會訪問并記錄這個對象。
內部類型——切片對象
當使用python語法的時候,就會創建切片對象,擴展的切片語法允許對不同的索引切片操作,包括進步切片,多維切片和省略切片。
多維切片的語法 sequence[ start1 : end1 , start2 , end2 ]
省略切片語法 sequence[..., start1,end1]
切片對象也可以使用內建函數slice()來生成,步進切片允許利用第三個切片元素來進行步進切片
步進切片語法sequence[start1,end1,step]
內部類型——省略
省略對象用于擴展切片語法,起到記號的作用,這個對象在切片語法中表示省略號。類似Null對象None,省略對象有一個唯一的名字Ellipsis,他的布爾值始終未空。
內部類型——XRange
調用內建函數xrange()會生成一個XRange對象,xrange()函數和range()函數類似,用于節省內存使用或range()無法完成的超大數據場合。
python數據類型的一些通用的方法
對象值比較
操作符
== 等于
!= 不等于
<> 不等于
< 小于
<= 小于等于
/> 大于
/>= 大于等于對象身份比較(is)
操作符
obj1 is obj2 obj1和obj2是同一個對象
obj1 is not obj2 obj1和obj2不是同一個對象
EXP:
a = b = 2
a is b (True)
a is not b (False)
- 標準類型內建函數
| 函數| 功能|
| -- |:--:|
| cmp(obj1,obj2) | 根據結果返回整型i |
| repr(obj) | 返回一個對象的字符串表示 |
| str(obj) | 返回對象合適可讀性好的字符串表示 |
| type(obj) | 得到一個對象的類型 |
內建函數里面,str() repr() 和反引號操作符可以將對象的內容、類型、數值屬性等轉換成字符串
repr和反引號操作可以通過eval()重新得到對象,str()無法用eval得到對象
obj == eval(repr(obj))
4、type()和isinstance()