python学习---变量内存机制

python学习—变量内存机制

在学习python的身份运算符is,is not 时,发现这个运算符跟效果*id()==id()*是一样的。那么,就运行一下代码

a = 12
b = 12
if a is b:
    print("a,b具有相同标识符")
else:
    print("a,b没有相同标识符")

if id(a) == id(b):
    print("a,b具有相同标识符")
else:
    print("a,b没有相同标识符")

运行结果
运行结果

这个时候学C++/C出身的筒子们就疑惑了,明明是两个变量,咋就id都一样了呢?是不是python为了提高内存利用效率重用了对象内存呢?

回顾一下python教程中关于变量的解释

 不需要预先声明变量的类型,变量的类型和值在赋值的那一刻被初始化(声明和定义的过程一起完成)

 在python中, 每一个变量在内存中创建,我们可以通过变量来查看内存中的值

这里是不是很熟悉,跟c中的指针一样啊(访问内存中的值)

再用代码验证一下
a = 12
b = 13
print(id(a))
print(id(b))

b = 12
print(id(a))
print(id(b))

运行结果
这里写图片描述

经过代码验证基本可以得出结论:

  • Python下的变量与C下的指针概念相同;
  • Python下变量的改变不是值得变,而是指向的内存地址的变化, 即换了一个内存地址,但原内存地址所在的值没有改变;
  • C下的变量的改变,是变量值得改变,而保存变量所在的内存地址固定不变;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值