前言
因之前有初學編程的人問我,關于python內存地址和變量一些疑問說他們之前到底怎么變化,對應的關系是怎么樣?解說一番后,他更茫然了!無奈!于是乎還是嘗試用這種方式做一個簡單筆記記錄。
1 python中內存和變量圖解示例
無理論直接干代碼:
import sys
print("=========================================")
print("開始創建一個變量,開閉一個新的內存空間A1")
a1 = '小鐘同學'
print('a1在內存中的【初始】16進制地址為:', hex(id(a1)))
print(sys.getrefcount(a1))
a1 = '小鐘同學睡覺了'
print("修改A1的值,---開閉一個新A1的內存地址空間分配")
print('a1在內存中的【最新】16進制地址為:', hex(id(a1)))
print(sys.getrefcount(a1))
print("=========================================")
print("a1的地址和值=a2的地址和值")
a2 = a1
print("a1的值為:", a1, "|", "a1在內存中的【最新】16進制地址為:", hex(id(a1)))
print(a2, hex(id(a2)))
print("a2的值為:", a2, "|", "a2在內存中的【最新】16進制地址為:", hex(id(a2)))
print("=========================================")
print("重新把之前的值給a1,它的地址是否會變吶?")
a1 = "小鐘同學睡覺了"
print("a1的值為:", a1, "|", "a1在內存中的【最新】16進制地址為:", hex(id(a1)))
print(a2, hex(id(a2)))
print("a2的值為:", a2, "|", "a2在內存中的【最新】16進制地址為:", hex(id(a2)))
print("=========================================")
print("修改a2的值,觀察a1和a2的地址的地址")
a2 = "小鐘同學該上班了!"
print("a1的值為:", a1, "|", "a1在內存中的【最新】16進制地址為:", hex(id(a1)))
print(a2, hex(id(a2)))
print("a2的值為:", a2, "|", "a2在內存中的【最新】16進制地址為:", hex(id(a2)))
輸出結果:
=========================================
開始創建一個變量,開閉一個新的內存空間A1
a1在內存中的【初始】16進制地址為: 0x19cc110
4
修改A1的值,---開閉一個新A1的內存地址空間分配
a1在內存中的【最新】16進制地址為: 0xe6df38
4
=========================================
a1的地址和值=a2的地址和值
a1的值為: 小鐘同學睡覺了 | a1在內存中的【最新】16進制地址為: 0xe6df38
小鐘同學睡覺了 0xe6df38
a2的值為: 小鐘同學睡覺了 | a2在內存中的【最新】16進制地址為: 0xe6df38
=========================================
重新把之前的值給a1,它的地址是否會變吶?
a1的值為: 小鐘同學睡覺了 | a1在內存中的【最新】16進制地址為: 0xe6df38
小鐘同學睡覺了 0xe6df38
a2的值為: 小鐘同學睡覺了 | a2在內存中的【最新】16進制地址為: 0xe6df38
=========================================
修改a2的值,觀察a1和a2的地址的地址
a1的值為: 小鐘同學睡覺了 | a1在內存中的【最新】16進制地址為: 0xe6df38
小鐘同學該上班了! 0x19e40c8
a2的值為: 小鐘同學該上班了! | a2在內存中的【最新】16進制地址為: 0x19e40c8
圖解
image.png
說明
部分的圖或資料來互聯網收集整理,如有侵權,煩請聯系,我會立即進行刪除。
End
純屬個人實踐中相關經驗之談,如有紕漏,還希望大佬們多多提點!
小鐘同學 | 文 【原創】|