我刚刚在Python中定义了变量.即:
a = b = 0
a = 1
Run Code Online (Sandbox Code Playgroud)
给我a=1和/ b=0或a和b是两个独立的变量.
但:
a = b = []
a.append(0)
Run Code Online (Sandbox Code Playgroud)
给我a = [0]和b = [0],或者a和b是对同一个对象的两个引用.这对我来说很困惑,这两种情况有何不同?是因为int是原始类型还是因为列表只是指针?
Mar*_*ers 13
a并始终b指向同一个对象.但是你不能改变整数,它是不可变的.
在你的第一个例子中,你反弹 a指向另一个对象.你没有在另一个例子中这样做,你从未分配过另一个对象a.
相反,您要求对象a 引用更改自身,以向该对象添加另一个条目.对同一个对象(the list)的所有其他引用都将看到这些更改.这是因为list对象是可变的.
正确的比较是重新分配a以指向新的列表对象:
a = b = []
a = [0]
Run Code Online (Sandbox Code Playgroud)
现在你反弹a并b仍在引用第一个列表对象.
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |