python中的赋值

x=ay=a与x=ay=x有什么区别?还有一个是x=y=a?只到这一步xy的值是一样的,之后做什么样的操作两种赋值方法会带来不同的结果举个栗子?... x = a
y = a

x = a
y = x
有什么区别?
还有一个是x = y = a?

只到这一步xy的值是一样的,之后做什么样的操作两种赋值方法会带来不同的结果举个栗子?
展开
 我来答
百度网友f0f9883
推荐于2017-11-26 · TA获得超过317个赞
知道小有建树答主
回答量:258
采纳率:100%
帮助的人:158万
展开全部
如果是简单的int 之类的赋值 楼上说的是对的
但是 如果 a 是某个对象 比如是一个list 就是另外一个情况了
x=a 开辟了两块内存 一个存X一个存a
y=a 同上

而恰好 x y 指向内存中的值相等 仅此而已 改变x 根本不会影响到y

但是 x=a y=x 就不一样了
这里y 创建了x的一个浅复制 实际是指向的同一块内存
举个栗子:
x=[1,2,3]
y=[1,2,3]
x[0]=4
print x 是 [4,2,3]
print y 是[1,2,3]
但是 如果是
x=[1,2,3]
y=x
x[0]=4
print x 是[4,2,3]
print y 也是[4,2,3] 因为 x y 指向的是同一块内存
albumin
2014-04-14 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2405万
展开全部
如果a指的不是变量,而是[1,2]这样的字面表达式的话。
x=a y=a 创建了两个不同的对象
x=a y=x 只创建了一个对象,y和x都指向这个对象
x=y=a 也只创建了一个对象
如果执行本地修改的操作,x=a y=x这种会同时改变两个变量
x=[1,2]
y=x
y.append(3)
print(x)
print(y)
因为 x和y是同一个对象,执行上面操作后x和y都变成[1,2,3]
x=[1,2]
y=[1,2]
y.append(3)
print(x)
print(y)
这次x 和y 是不同的对象,y被改变为[1,2,3],但x没有变还是[1,2]
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
自由de王国
2014-04-14 · TA获得超过1066个赞
知道小有建树答主
回答量:661
采纳率:50%
帮助的人:844万
展开全部
这些是完全一样的,前两个就是简单的赋值,没什么好说的。最后一个是说明表达式是从=右边向左执行的,也就是先计算右值,赋给左值,可以连起来。
x=y=a,x是左值,y=a是右值,先计算y=a,得到结果y,值为a,然后执行x=y,所以x的值也是a了。
但一般不推荐,因为可读性不好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式