【发布时间】:2021-10-29 04:31:15
【问题描述】:
x=5
y=x
x=7
# Changing the value of x does not effect the value of y
作为一个简单的例子,x&y 有不同的内存位置,所以改变一个不会影响另一个
但是在下面的代码中next(y) 是给4 为什么?
根据我的逻辑,它一定是1 我出错的地方
a=[1,2,3,4,5,6,7,8,9,10]
x=iter(a)
y=x
print(next(x))
print(next(x))
print(next(x))
print(next(y))
【问题讨论】:
-
你错了。
y = x会将引用分配给y,它指向内存中的 same 对象 -
赋值从不复制 Python 中的数据。
-
"作为一个简单的例子,x&y 都有不同的内存位置" 不,他们没有。
x和y都引用同一个对象。但是,x=7* 不会改变x所指的任何对象,它只是将名称x重新分配给一个新对象 -
x 只是一个生成器对象,y 是 x,所以当 x 的 evr next 被调用时,next(x) 的值在 x 和 y 中都会更新