整數 浮點數
Python的數字類型為整數與浮點數。
整數
整數可以為負數(例: - 1) 與 正整數(例: 100)。
Python沒有long long(C++)、也沒有Big Decimal(Java),不管多大的數字,都是整數。
浮點數
浮點數可以為負小點數(例: - 1.5)與 正小數點 (例: 100.5)。
變數要有初始值
以下程式碼會編譯錯誤,因為b沒有初始值。
1
2
a = 1
b
變數沒有類型
Python的變數沒有類型,所謂的「類型」是指變數「指向的內容」型別。
以下的程式碼,變數a是沒有類型的,a可以指向整數1,也可以指向字串Hi,變數指向的內容型別才是類型。
使用type可以檢查變數指向的內容型別。
1
2
3
4
a = 1
print(type(a))
a = "Hi"
print(type(a))
<class 'int'>
<class 'str'>
2進位 16進位 8進位
- 2進位 0b開頭
- 16進位 0x開頭
- 8進位 0o開頭
- 10進位 不用任何開頭
1
2
3
4
5
6
7
8
n2 = 0b10
print(f"2進位 n2: {n2}")
n16 = 0x10
print(f"16進位 n16: {n16}")
n8 = 0o10
print(f"8進位 n8: {n8}")
n10 = 10
print(f"10進位 n10: {n10}")
2進位 n2: 2
16進位 n16: 16
8進位 n8: 8
10進位 n10: 10
Python整數大小
sys.getsizeof()
取得變數指向的內容記憶體大小。
Python 的 sys.getsizeof() 函數返回的單位是位元組(Bytes)。
使用前請先import sys。
1
2
import sys
sys.getsizeof(n)
自動擴充記憶體大小
隨著內容的數字位數愈大,會自動擴充記憶體大小,每次擴充4byte。
以下程式碼**代表次方,2 ** 3 = 8 2 的 3 次為 8 (2 * 2 * 2 = 8)
下方程式碼記憶體大小間隔為4byte。
1
2
3
4
5
6
7
8
9
10
import sys
n = 0
print(f"n size = {sys.getsizeof(n)}")
n = 2 ** 15
print(f"n size = {sys.getsizeof(n)}")
n = 2 ** 30
print(f"n size = {sys.getsizeof(n)}")
n = 2 ** 60
print(f"n size = {sys.getsizeof(n)}")
n size = 28
n size = 28
n size = 32
n size = 36
超過整數輸出最大的位數 ValueError
最大的位數為4300位,超過了就會輸出以下的錯誤,無法把超過4300位數的整數轉成字串輸出。
Exceeds the limit (4300 digits) for integer string conversion
參考文件:
https://docs.python.org/zh-tw/3/library/stdtypes.html
1
2
n = 9 ** 9999
print(f"n = {n}")
print(f"n = {n} ")
^^^
ValueError: Exceeds the limit (4300 digits) for integer string conversion; use sys.set_int_max_str_digits() to increase the limit