python内存管理变量_关于Python变量内存分配和id()函数的疑惑

我有这样一段Python代码

# 列表l1

l1 = [12, 13, 14, 15, 16]

# 数字n1

n1 = 12

# 列表l1中元素的id

id_l1 = [id(n) for n in l1]

# 打印列表l1中元素的id

print("id_l1: ", id_l1)

# 打印数字n1的id

print("id_n1", id(n1))

# 列表l2

l2 = [12, 13, 14, 15, 16]

# 列表l2中元素的id

id_l2 = [id(n) for n in l2]

# 打印列表l2中元素的id

print("id_l2:", id_l2)

print(id(l1))

print(id(l2))

我尝试通过上面代码去查看变量的内存地址。

我预想的是列表中元素的内存地址和整数变量的内存地址是不同的,且不同列表中的元素的内存地址也应该是不同的,但是我得到了这样的结果:

# 上诉代码的运行结果

id_l1: [1374364720, 1374364752, 1374364784, 1374364816, 1374364848]

id_n1 1374364720

id_l2: [1374364720, 1374364752, 1374364784, 1374364816, 1374364848]

2355866913672

2355866928648

可见,l1中数字12元素的内存地址和整数n1的内存地址一样,且列表l1和列表l2中元素的内存地址完全一样,虽然l1和l2的内存地址不一样。

请问Python的内存地址分配的规则到底是什么样的呢?亦或者是id()函数所返回的并不是真实的内存地址呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值