在这两种情况下,对象的这个属性值如何不同?

2024-04-25 00:15:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如何调用list(Case 1)的属性,使print y的输出与Case 2不同?你知道吗

# Case 1: using a list as value
>>> x = ["one", "two", "three"]
>>> y = x
>>> x[0] = "four"
>>> print x
["four", "two", "three"]
>>> print y
["four", "two", "three"]

# Case 2: using an integer as value
>>> x = 3
>>> y = x
>>> x = x + 1
>>> print x
4
>>> print y
3

编辑:

为了说明此行为与列表是可变的和字符串不是可变的无关,可以使用以下情况代替案例2:

>>> x = ["one", "two", "three"]
>>> y = x
>>> x = x + ["four", "five"]
>>> print x
["four", "two", "three", "four", "five"]
>>> print y
["four", "two", "three"]

Tags: an编辑属性valueasintegeronelist
1条回答
网友
1楼 · 发布于 2024-04-25 00:15:56

两个片段之间的关键区别是

>>> x[0] = "four"

>>> x = x + 1

在第一种情况下,修改现有对象,在第二种情况下创建新对象。所以第一个代码段有一个对象和两个名称,x和y,在第二个代码段中有两个对象。注意,这与列表的可变性无关(与int的不可变性),您可以将第二个代码段编写为

x = [1,2,3]
y = x 
x = x + [4]

得到基本相同的结果(=两个不同的物体)。你知道吗

相关问题 更多 >