Python不同的代码结果

参见英文答案 >
How to clone or copy a list?                                    20个

我刚刚开始学习和阅读Python,并且在阅读本书的前几章时,我一直难以理解.我在和翻译一起玩的时候偶然发现了这个.

这是我的问题,这两个表达式的值如何不同.在第一个示例中,y的值在更改x后保持不变,而在下一个示例中,当更改x时,它也会更改y的值.

例1:

>>> x = 5
>>> y = x
>>> x += 1
>>> x
6
>>> y
5

示例:2

>>> x = [5]
>>> y = x
>>> x[0] = 6
>>> x
[6]
>>> y
[6]

最佳答案 它关于python的参考.什么时候

a = [2]
b = a

这里a和b都引用[2].你可以通过id检查它

>>>id(a)
3066750252L

>>>id(b)
3066750252L

两者都是相同的ID.所以a.append或b.append都会影响a和b.那就是[2].这是在可变对象的情况下.所以[0] = 6也会影响b.如果是整数,它不会影响因为,int是不可变对象.所以

>>>a = 2
>>>id(a)
164911268
>>>a = a + 1
>>>a
3
>>>id(a)
164911256

这里id改变了.这意味着创建了新的int对象3.它现在通过变量a引用.

希望这可以帮助

点赞