前言
因之前有初学编程的人问我,关于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
图解
说明
部分的图或资料来互联网收集整理,如有侵权,烦请联系,我会立即进行删除。
End
纯属个人实践中相关经验之谈,如有纰漏,还希望大佬们多多提点!
小钟同学 | 文 【原创】|