Python 解释“按对象调用”中的代码函数
如何使y等于x对象调用什么但没有函数调用它是如何工作的如何改变y值Python 解释“按对象调用”中的代码函数,python,python-3.x,Python,Python 3.x,如何使y等于x对象调用什么但没有函数调用它是如何工作的如何改变y值 y = [1, 2, 3] x = y x[:] = [-1]*3 print y [-1, -1, -1] 请解释x和y中会发生什么,以及对象调用什么 y = [1, 2, 3] x = y x和y都指向同一个列表 x[:] = [-1]*3 该列表将通过指定给整个对象切片的方式进行修改(请参见) 修改后的列表将打印到控制台 顺便说一句:没有“对象调用”。这只是对一个切片的赋值(如链接中所述,该切片修改对象)。通过执行x
y = [1, 2, 3]
x = y
x[:] = [-1]*3
print y
[-1, -1, -1]
请解释x和y中会发生什么,以及对象调用什么
y = [1, 2, 3]
x = y
x
和y
都指向同一个列表
x[:] = [-1]*3
该列表将通过指定给整个对象切片的方式进行修改(请参见)
修改后的列表将打印到控制台
顺便说一句:没有“对象调用”。这只是对一个切片的赋值(如链接中所述,该切片修改对象)。通过执行
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-----------------------|
|
--------------
| [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上实现,因为它们包含相同的对象 这里没有函数调用。您能更清楚地解释您的问题吗?是否有人真的已经决定使用甚至go想做的看起来更像?感谢您的评论感谢您宝贵的输入。。。。
>>> del y
>>> x #but you can still access that object using x
[1, 2, 3, 4]