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

a为什么没变2

http://img1.sycdn.imooc.com//55a89a0d00016ddc01360119.jpg

我只是将a重新赋值了啊(赋值不是生成a和1的地址,将a指向1吗?)?不是因该(2,)?

正在回答

4 回答

实际上a=1赋值的时候a的内容就是整数1的地址。

t=(a,)开辟的内存空间中,t有一个地址,t[0]的内容就是a的内容,也就是1的地址。所以输出的时候跳到1那里输出1。

a=2赋值改变了a的内容,然而没有改变t的相关东西,t[0]还是1的地址,print t结果还是(1,)

想要达到你的效果要重新定义t,而重新定义这就算不上是改变tuple了

a=1

t=(a,)

print t

a=2

t=(a,)

print t

试了下list里面放变量也是一样的

a=1

b=2

L=[a,b]

a=3

b=4

print L

出来还是[1,2]。所以list或者tuple跟变量结合在可改变性方面好像没什么意义的样子。。。

还有如果是这样

L=[a,b]

a=1

b=2

程序会报错,因为开始定义L的时候并不知道a的地址是啥,a作为一个变量内容还是空的。

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

http://img1.sycdn.imooc.com//55fa13010001c48601350147.jpg这个问题说明一切。。Python中的每次赋值都是生成一个新额的变量,so 此a非彼a。list类似C++的vector或java的Arraylist之类的。其实现应该是存储的指针数组,tuple是常量指针,所有指向不可修改,但不是说其中的元素不可修改。当然比如1,2这些最小例子本身就不可修改,这是不可修改的。而list本身是可变对象,可以修改其中的指向。

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

和题主有同样的疑惑。求解答

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

t(a,)即t只有一个元素地址是[0],存在这个地址里面的最小分子是'a'...a已经是最终的粒子了 不能改变了,  课程中之所以改变是因为List本身是个容器 里面盛放的东西可以被替换

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

749264幽殇

看清楚再答谢谢。 a是变量。
2015-08-08 回复 有任何疑惑可以回复我~
#2

akira1990 回复 749264幽殇

你才是理解错了别人的意思了。。。
2015-09-17 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

a为什么没变2

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