|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
为什么 第一段对old运用了方法后,new列表会跟着变,但是把old重新赋值后,new就不会变呢?
是因为 sort是对old进行处理,所以new会跟着变?可是重新赋值的话,并不影响new的值?
第一段:
>>> old = [1, 2, 3, 4, 5]
>>> new = old
>>> old.sort(reverse=True)
>>> old
[5, 4, 3, 2, 1]
>>> new
[5, 4, 3, 2, 1]
第二段:
>>> old = [6]
>>> old
[6]
>>> new
[5, 4, 3, 2, 1]
感谢各位大神的回答~~
本帖最后由 jackz007 于 2020-11-25 12:21 编辑
old 和 new 是标识符,[1 , 2 , 3 , 4 , 5 ] 和 [6] 是对象,Python 通过标识符来识别和处理对象,所以,为变量赋值只不过是将标识符绑定到对象。
表达式
- old = [1 , 2 , 3 , 4 , 5]
复制代码
实现了标识符 old 和列表对象 [1 , 2 , 3 , 4 , 5] 的绑定,而语句
则实现了 new 与 old 两个标识符共同对同一个列表对象 [1 , 2 , 3 , 4 , 5] 的绑定,这就意味着从此以后,无论通过 old 还是 new 访问到的均为同一个列表对象。
这一句通过标识符 old 利用对象的方法对列表对象元素顺序进行了重排,重排前后,目标对象始终是同一个,只不过,对象内容发生了改变,old 、new 与对象的绑定关系并未发生改变,所以,old 和 new 呈现出的内容是完全一样的。
后来,又执行了这一句
使标识符 old 与新的列表对象 [6] 实现了绑定,从此,old 绑定了新的对象,而 new 依然绑定的是原来的对象,old 和 new "分道扬镳"。
|
|