整數 浮點數

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

results matching ""

    No results matching ""