python中的赋值
x=ay=a与x=ay=x有什么区别?还有一个是x=y=a?只到这一步xy的值是一样的,之后做什么样的操作两种赋值方法会带来不同的结果举个栗子?...
x = a
y = a
与
x = a
y = x
有什么区别?
还有一个是x = y = a?
只到这一步xy的值是一样的,之后做什么样的操作两种赋值方法会带来不同的结果举个栗子? 展开
y = a
与
x = a
y = x
有什么区别?
还有一个是x = y = a?
只到这一步xy的值是一样的,之后做什么样的操作两种赋值方法会带来不同的结果举个栗子? 展开
3个回答
展开全部
如果是简单的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 指向的是同一块内存
但是 如果 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 指向的是同一块内存
展开全部
如果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]
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]
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这些是完全一样的,前两个就是简单的赋值,没什么好说的。最后一个是说明表达式是从=右边向左执行的,也就是先计算右值,赋给左值,可以连起来。
x=y=a,x是左值,y=a是右值,先计算y=a,得到结果y,值为a,然后执行x=y,所以x的值也是a了。
但一般不推荐,因为可读性不好。
x=y=a,x是左值,y=a是右值,先计算y=a,得到结果y,值为a,然后执行x=y,所以x的值也是a了。
但一般不推荐,因为可读性不好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询