Python id 記憶體位址

id(變數)函式可以檢查記憶體位址。

以下記憶體位址是相同的。

  1. 字串由26英文字母大小寫、數字0-9、底線_
  2. 字串長度為0或1
  3. 數字介於-5 至 256

打開終端機,進入python3

python3

字串由英文字母大小寫0-9_

輸入

>>> a = "ABC123_"
>>> b = "ABC123_"
>>> id(a)
4308096592
>>> id(b)
4308096592

發現變數a與變數b的記憶體位址都是相同

最後的字尾不是1(字串由26英文字母大小寫、數字0-9、底線_)的範圍

>>> a = "abcABC_123#"
>>> b = "abcABC_123#"
>>> id(a)
4410010032
>>> id(b)
4410010352

顯示的結果是4410010032與4410010352是不同記憶體位址。

打開PyCharm,輸入以下程式碼,執行後,發現記憶體位址是相同,PyCharm有針對id()函式進行特殊化。

1
2
3
4
a = "abcABC_123#"
b = "abcABC_123#"
print(id(a))
print(id(b))
4511047536
4511047536

字串長度為1或0

回到終端機python3的環境下,輸入任意一個字,發現執行結果記憶體位址都是相同。

>>> a = "#"
>>> b = "#"
>>> id(a)
4321877160
>>> id(b)
4321877160

回到終端機python3的環境下,變數長度為0,發現執行結果記憶體位址都是相同。

>>> a = ""
>>> b = ""
>>> id(a)
4321834720
>>> id(b)
4321834720

數字介於-5 至 256

發現執行結果記憶體位址都是相同

>>> a = -5
>>> b = -5
>>> id(a)
4321813256
>>> id(b)
4321813256

數字小於-5,發現記憶體位址不相同

>>> a = -6
>>> b = -6
>>> id(a)
4306176784
>>> id(b)
4304187792

數字超出256,記憶體位址不相同

>>> a = 257
>>> b = 257
>>> id(a)
4306176752
>>> id(b)
4306176560

使用sys.intern()指向相同記憶體位址

>>> import sys
>>> a = "abc#"
>>> b = sys.intern(a)
>>> id(a)
4308095200
>>> id(b)
4308095200

results matching ""

    No results matching ""