Python:如何理解赋值和引用?
python代码部分如下所示:Python:如何理解赋值和引用?,python,variable-assignment,Python,Variable Assignment,python代码部分如下所示: >>> values = [0, 1, 2] >>> values[1] = values >>> values [0, [...], 2] 为什么值是[0,[…],2],什么是..?为什么值不是[0[0,1,2],2]?[…]是一个列表。。。在本例中,列表中的列表 将第二项值指定给自身,以便插入(或引用)完整的值列表 一个简短的测试: values = [0, 1, 2] values[1] = value
>>> values = [0, 1, 2]
>>> values[1] = values
>>> values
[0, [...], 2]
为什么值是
[0,[…],2]
,什么是..
?为什么值不是[0[0,1,2],2]
?[…]是一个列表。。。在本例中,列表中的列表
将第二项值指定给自身,以便插入(或引用)完整的值列表
一个简短的测试:
values = [0, 1, 2]
values[1] = values
print values
v = values[1]
print v
v[1] = 5
print values
印刷品
[0, [...], 2]
[0, [...], 2]
[0, 5, 2]
如您所见,当更改值[1][1](即v[1])时,不会更改该特定项,而是更改引用本身,否则它将是[0[0,5,2],2]。您创建了一个递归引用;您将索引
1
处的项替换为对整个列表的引用
为了现在显示该列表,Python不会递归到嵌套引用中,而是显示[…]
>>> values = [0, 1, 2]
>>> values[1] = values
>>> values
[0, [...], 2]
>>> values[1] is values
True
引用值[1]
与引用值
是一样的,您可以无限期地这样做:
>>> values[1]
[0, [...], 2]
>>> values[1][1] is values
True
>>> values[1][1] is values[1]
True
[…]
表示您将变量自引用到自身(循环引用):
现在,您可以使用值
或值[1]
修改对象:
>>> values[1].append(4)
>>> values
[0, [...], 2, 4]
#or
>>> values[1][1][1].append(5)
>>> values
[0, [...], 2, 4, 5]
>>> values[1].append(4)
>>> values
[0, [...], 2, 4]
#or
>>> values[1][1][1].append(5)
>>> values
[0, [...], 2, 4, 5]