为了账号安全,请及时绑定邮箱和手机立即绑定

把一个变量a赋值给另一个变量b

a = 'ABC'
b = a
a = 'XYZ'
print b

其中步骤的解释说到在第三步a = 'XYZ'时,重新创建了一个新的字符串'XYZ'由a去指向,而b停留在了原来的a的'ABC'处。   请问为什么不是a = 'XYZ'时将其原指向的'ABC'改变为'XYZ'呢?

正在回答

5 回答

你还没理解重新赋值的概念吧,重新创建了一个新的字符串'XYZ'由a去指向就是说,新定义一个a = 'XYZ'(意思是说把XYZ的值赋给a),所以a = 'XYZ'和上面a = 'ABC'(把ABC值赋值给a)是没有关联的,所以不用去纠结。

0 回复 有任何疑惑可以回复我~

你的思路有点偏差:因为有了语句‘’b=a‘’, 所以b永远指向a指向的内容,也就是,a去哪儿,b永远跟着。

显然不对。


1 回复 有任何疑惑可以回复我~

字符串‘ABC’保存在内存中,a 这个变量记录的是‘ABC’在内存中的地址,当把a赋给b时,只是把 'ABC'的地址复制了一份给b,  当a='XYZ'时, 是把‘XYZ’在内存中的地址赋值给了a, 取代了原来a保存的'ABC'的地址,而不是将a 指向的内存空间中的'ABC'内容改写成了'XYZ'.  这和c语言的指针是一毛一样的。

1 回复 有任何疑惑可以回复我~

额,,,这个是因为python就这样规定的,不然的话,又有人会问为什么不是在第三步a = 'XYZ'时,重新创建了一个新的字符串'XYZ'由a去指向,而b停留在了原来的a的'ABC'处?

0 回复 有任何疑惑可以回复我~

我们把a,b当做是人,'ABC','XYZ'当做是街

小a家地址ABC街

小a把房子租给小b

小a搬出去住,搬到XYZ街

问小b住在哪条街

(街道是不会变的,变的是住在里面的人。)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758623    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

把一个变量a赋值给另一个变量b

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信