數字簡介
Python 數字 數據類型用於存儲數值,它是不可改變類型,這就意味着如果改變 數字 數據類型的值,將重新分配內存空間。
所支持的類型
Python 支持四種不同的數值類型:
1.整型(Int)
python中的整型有幾種類型:
布爾型
True 與 False 注意首字母大寫!!
標準整型
Python的標準整型等價於C的(有符號)長整型(看看!)
一般以十進制表示,但也支持八和十六進制,其表示規定常規。
長整型
前面也提到過,python之中的長整型幾乎沒有範圍限制,僅僅與計算機支持的虛擬內存有關。
長整型是整型數的超集,可表示極大的數,最後是一個大寫或小寫的L。(爲了避免與數字1混淆,通常使用大寫L)(注意:python3中已經沒有長整型了)
2.雙精度浮點型
Python中的浮點型類似於C中的double類型,是雙精度浮點型。可直接用十進制或科學計數法表示(2.5e2 = 2.5 x 10的2 = 250)每個佔8個字節。
採用標準IEEE754號規範,52個位用於表示底,11個用於表示指數,剩下一個表示符號。
3.複數
對沒錯我們支持複數!
複數由實數部分和虛數部分構成,
可以用a + bj,或者complex(a,b)表示, 複數的實部a和虛部b都支持浮點型。
複數對象擁有數據屬性。三個內建函數:
num.real 返回實部
num.imag 返回虛部
num.conjugate() 返回共軛複數
操作符
不同數據類型的數
支持不同類型之間的數進行計算,會自己做強制類型轉換,轉化規則同C:
- 如果有一個數是複數,則另一個操作數被轉換爲複數;
- 否則,如果有一個是浮點型,則另一個操作數被轉換爲浮點型;
- 否則,如果有一個是長整型,則另一個操作數被轉換爲長整型;
- 否則,倆都是普通整型,無需轉換。
另外有強制類型轉換函數:coerce(),其參數有兩個,可按上述規則轉換數:
>>> coerce(1.3,134L)
(1.3, 134.0)
>>>
其餘類型轉換:
int(x [,base ]) 將x轉換爲一個整數
long(x [,base ]) 將x轉換爲一個長整數
float(x ) 將x轉換到一個浮點數
complex(real [,imag ]) 創建一個複數
str(x ) 將對象 x 轉換爲字符串
repr(x ) 將對象 x 轉換爲表達式字符串
eval(str ) 用來計算在字符串中的有效Python表達式,並返回一個對象
tuple(s ) 將序列 s 轉換爲一個元組
list(s ) 將序列 s 轉換爲一個列表
chr(x ) 將一個整數轉換爲一個字符
unichr(x ) 將一個整數轉換爲Unicode字符
ord(x ) 將一個字符轉換爲它的整數值
hex(x ) 將一個整數轉換爲一個十六進制字符串
oct(x ) 將一個整數轉換爲一個八進制字符串
特殊的算術操作符:
除法:
在python中講除法,要有三個概念:
- 傳統除法
- 地板除法
- 真正除法
地板除法:
這個在之前學C的時候還喫過不少虧。
所謂地板除法,即取比商小的最大整型作爲除法運算的結果。
比如:5除以2等於2.5,但在地板除法中會取2。
在C++中,這是對兩個操作數都爲整型時做的事。
真正除法:
也就是正常的除法,5除以2等於2.5,那就是2.5。
我們都知道之前想這樣的話,5和2至少有一個得寫成浮點型數,否則只會得到2
傳統除法:
也就是C和早期python使用的方式。其原理就是,當兩個操作數均爲整型時採取地板除,有一個數是浮點才採取真正的除法。是兩個方法的組合
python採取的除法
Python中的除法運算有兩個符號:“/” 和 “//”,
在2.7版本中,/ 時採取傳統除法,//時採取地板除。
在3.6版本中,/ 時採取真正的除法,//時爲地板除。
冪運算:
冪運算操作符和一元操作符之間的優先級關係比較特別:
- 冪運算操作符比 左 側操作數的一元操作符優先級 高 ;
- 冪運算操作符比 右 側操作數的一元操作符優先級 低 ;
>>> -3**2 #先執行冪運算再取負;
-9
>>> 4**-.5 #先執行右邊的複數再進行冪運算
0.5
>>> 4**-1
0.25
位運算
先補個課:
瞭解一下位運算的意義。
Python的整型數據支持標準的位運算:取反(~)、按位與(&)、或(|)、異或(^),左右移(<<和>>)
內建函數和工廠函數因爲概念還有一絲模糊,所以不冒昧拋出。