为什么列表、字典和元组在一行中声明时取值反之?
Why list, dictionary and tuple are taken value vice versa when declare it in one-line?
我在python中处理列表、字典和元组时感觉很奇怪。
当我们像 a = b = c = 0
这样在一行中声明多个变量时,它的行为就像单独的变量。
如果我们更新上述任何变量的值,那么它不会影响下面的另一个变量。
a = 10
b = 11
c = 13
但是,这个东西不适用于列表、元组和字典。如果我们像下面这样声明空白列表。
a = b = c = []
现在,我只向 a
列表附加一个值。
a.append('Testing')
现在,b
和 c
会自动分配该值。
字典和元组也会发生这种情况。
我必须知道为什么不能像上面的例子那样声明它。
这是可变对象和不可变对象的概念。当您编写 a = b = c = []
之类的代码时,所有变量都引用同一个对象。如果这个对象是可变的,当你从任何一个变量改变对象时,其他两个变量也会反映出变化。有些对象类型是可变的,有些则不是。
您可以阅读下面的文章以获得更完整的答案。
https://medium.com/@meghamohan/mutable-and-immutable-side-of-python-c2145cf72747
我在python中处理列表、字典和元组时感觉很奇怪。
当我们像 a = b = c = 0
这样在一行中声明多个变量时,它的行为就像单独的变量。
如果我们更新上述任何变量的值,那么它不会影响下面的另一个变量。
a = 10
b = 11
c = 13
但是,这个东西不适用于列表、元组和字典。如果我们像下面这样声明空白列表。
a = b = c = []
现在,我只向 a
列表附加一个值。
a.append('Testing')
现在,b
和 c
会自动分配该值。
字典和元组也会发生这种情况。
我必须知道为什么不能像上面的例子那样声明它。
这是可变对象和不可变对象的概念。当您编写 a = b = c = []
之类的代码时,所有变量都引用同一个对象。如果这个对象是可变的,当你从任何一个变量改变对象时,其他两个变量也会反映出变化。有些对象类型是可变的,有些则不是。
您可以阅读下面的文章以获得更完整的答案。
https://medium.com/@meghamohan/mutable-and-immutable-side-of-python-c2145cf72747