2024-04-20 00:01:26 发布
网友
如何使y等于x被对象调用但没有函数调用它是如何工作的如何改变y值
y = [1, 2, 3] x = y x[:] = [-1]*3 print y [-1, -1, -1]
请解释x和y中会发生什么,以及对象调用什么
通过执行x=y,您只需创建对同一对象的两个引用,因为该对象是可变的,所以您也可以修改它。你知道吗
x=y
>>> y = [1, 2, 3] >>> sys.getrefcount(y) 2 >>> x = y # now y also points to the same object >>> sys.getrefcount(y) 3 >>> x is y True
现在x和y指向内存中的同一个对象:
x
y
X -| | | [1, 2, 3] | | | | | | | Y -|
现在使用以下任何引用修改该对象:
>>> x.append(4) #modify object using either x or y >>> x,y ([1, 2, 3, 4], [1, 2, 3, 4])
现在移除对该对象的引用之一,例如y:
>>> del y >>> x #but you can still access that object using x [1, 2, 3, 4]
列表是python中的一个对象,它不是一个简单的变量。只是就像c++中的指针x=y让指针平等。平等对x的修改也将在y上实现,因为它们包含相同的对象。你知道吗
y = [1, 2, 3] x = y
x和y都指向同一个列表。你知道吗
x[:] = [-1]*3
通过分配给整个对象片(参见here),该列表被修改。你知道吗
print y # [-1, -1, -1]
修改后的列表将打印到控制台。你知道吗
顺便说一下:没有“对象调用”。这只是对切片的赋值(如链接中所述,它修改了对象)。你知道吗
通过执行
x=y
,您只需创建对同一对象的两个引用,因为该对象是可变的,所以您也可以修改它。你知道吗现在
x
和y
指向内存中的同一个对象:现在使用以下任何引用修改该对象:
现在移除对该对象的引用之一,例如y:
列表是python中的一个对象,它不是一个简单的变量。只是就像c++中的指针
x=y
让指针平等。平等对x的修改也将在y上实现,因为它们包含相同的对象。你知道吗x
和y
都指向同一个列表。你知道吗通过分配给整个对象片(参见here),该列表被修改。你知道吗
修改后的列表将打印到控制台。你知道吗
顺便说一下:没有“对象调用”。这只是对切片的赋值(如链接中所述,它修改了对象)。你知道吗
相关问题 更多 >
编程相关推荐