Python id 記憶體位址
id(變數)函式可以檢查記憶體位址。
以下記憶體位址是相同的。
- 字串由26英文字母大小寫、數字0-9、底線_
- 字串長度為0或1
- 數字介於-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