理解Python的“变量”

变量

和C的变量完全不同,C变量修改值地址是不会变的,即重写了该变量名对应地址的存储单元内的数据值。Python中出现x=10,意味着引用x指向了10(所以引用是啥)

实际上我也不清楚这里所谓引用的实现到底是什么,只知道x指向了存放10的存储单元。然后,id(x)可以查看到具体地址。

关于可变数据类型和不可变数据类型

我个人的理解是,可变数据类型的对象往往会以其他对象的引用作为值的一部分。
我们假设有个可变类型对象的引用A,它以某对象引用x为部分值。修改x对象的值(whatever,x的指向改变or不改变都可),那么A对象的值发生了改变,但是,A并没有改变指向,改变指向的应该是x(or x的值中的引用)
以List为例
在这里插入图片描述看最后RESTART分割线下的部分,A[0]=10前后A引用指向未变,但是A[0]指向变了。

不可变呢?
不以其他对象引用为值的一部分,比如数字,字符串(Python里面的字符串又和C,C++不一样了orz据说Python没有区别于字符串的字符概念,所以无法利用索引啥的去调用字符串中的单个字符)

还有就是不可修改值的类型,比如Tuple。因为Tuple和List一样存储的是引用,而Tuple不允许修改值,所以想要得到一个不一样的引用(?)只能修改指向了。
在这里插入图片描述
从声明了B的地方看起。
B是(1,2,3),但我想让B为(10,2,3)
尝试修改B[0]=10,惨遭无情报错。
行吧,我就令B指向一个新Tuple(10,2,3)
前后id(B)改变。

To sum up

差不多就是这样。学校网课连概论还没讲完,现在就去追究这些东西真滴太累了orz
不过蛮好玩的哈哈哈哈哈
有什么不对的地方欢迎指出,大家愉快讨论学习哈!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值