在python中变量是否被分配给内容地址_python变量与地址的关系

python变量与地址的关系

在C语言中,系统会为每个变量分配内存空间,当改变变量的值时,改变的是内存空间中的值,变量的地址是不改变的。

而在python中,Python采用的是基于值的管理方式。

当给变量赋值时,系统会为这个值分配内存空间,然后让这个变量指向这个值;当改变变量的值时,系统会为这个新的值分配另一个内存空间,然后还是让这个变量指向这个新值。

也就是说,C语言中变量变的是内存空间中的值,不变的是地址;而在Python中,变量变的是地址,不变的是内存空间中的值。

x = 12

print(x)

x = 3.14

print(x)

同时,如果没有任何变量指向内存空间的某个值,这个值称为垃圾数据,系统会自动将其删除,回收它占用的内存空间。

同时,如果没有任何变量指向内存空间的某个值,这个值称为垃圾数据,系统会自动将其删除,回收它占用的内存空间。

另外,我们可以使用python的id()函数来查看变量的内存地址。

a = 2.0

b = 2.0

pirnt(id(a)) # 2658670250000

pirnt(id(b)) # 2658670249968

a = 2

b = 2

print(id(a)) # 140725523280176

print(id(b)) # 140725523280176

我们看到,当a,b都是2.0时,它们的地址不一样,说明系统为a,b分配了不同的内存空间。但是,当a,b都是2时,它们的地址是一样的,怎么回事呢?这是因为,为了提高内存空间的利用效率,对于一些比较小的整型变量(int)使用了相同的内存空间。如果数值比较大,地址就不一样了。

a = 2

b = 2

print(id(a)) # 140725523280176

print(id(b)) # 140725523280176

a = 222

b = 222

print(id(a)) # 140725523287216

print(id(b)) # 140725523287216

a = 2222

b = 2222

print(id(a)) # 2658670249520

print(id(b)) # 2658670249776

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值