马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目如下:
old = [1,2,3,4,5]
new = old
old = [6]
print(new)
为什么不是6而是[1,2,3,4,5]?
按照11讲的答案来讲:
list1 =[1,3,2,9,7,8]
list2 = list1[:]
list3 = list1
list1.sort()
list2 = [1,3,2,9,7,8]
list3 = [1,2,3,7,8,9]
new不应该跟随old变化吗?
我说一下吧!!!
new,old都是变量名。但是python里很少有人提变量名这个概念,一般都说是名字。这是因为一个数据可以有多个变量名,就像人可以有几个名字一样。
old = [1,2,3,4,5]表面上是将[1,2,3,4,5]赋值给old,其实是给[1,2,3,4,5]起了叫old名字。就像给刚出生的孩子起了个名字,他才有了户口。
new = old就是给old所属的数据又起了个别名。就像给刚出生的孩子起了个名字后,又起了个小名。print(new)就会出现[1,2,3,4,5]
old = [6],这里要注意两点。首先,我们可以直接用=重新定义变量名背后的数据。但是=不能改变原有的数据(只要这个数据还有名字。一旦没有了名字,系统就不会承认这个数据,会将其回收。就像人没有了名字,就无法精确定义这个人。)其次,在一个作用域内一个变量名只能对应一个数据。
虽然old这个名字已经不再是属于[1,2,3,4,5],但[1,2,3,4,5]还有个别名,所以这个数据还被保留。
|