变量的存放

参考: https://www.liaoxuefeng.com/

先来看一个简单的变量地址存放的例子

a = 'ABC'
b = a
a = 'XYZ'
print(b)

那么最后一行打印出来的结果是ABC还是XYZ呢?

结果是:ABC

why?

一行一行的执行代码,看下到底发生了什么?

a = 'ABC' # 解释器创建了变量a和字符串'ABC',并且把a指向'ABC'
b = a # 解释器创建了变量b,并且把b也指向了'ABC'
a = 'XYZ' # 解释器创建了字符串'XYZ',并且把变量a改为指向'XYZ',但是b没有更改

所以最后打印的变量就是XYZ了。

一个“可变”的tuple类型其实也是类似的机制,变量内存地址指向问题。

看一个“可变”的tuple的例子

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

这个tuple定义的时候有3个元素,分别是a,b和一个list。

不是说tuple不可变吗?what?怎么又可以改变了?

从表面上看,tuple里面的元素确实变了,但是其实变的不是tuple元素,而是tuple里面的第3个元素,一个list。tuple一开始指向的这个list并没有发生改变。

So,tuple所说的不变,指的是tuple里面的每个元素指向的内容是不变的。但是这个内容内部的动作我们是不care的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值