Charon小白 发表于 2020-5-13 17:37:03

求大神棒棒小白 为什么答案不是6呢

dict={'1':1,'2':2}
theCopy=dict
dict['1']=5
sum=dict['1']+theCopy['1']
print(sum)

liuzhengyuan 发表于 2020-5-13 17:41:11

本帖最后由 liuzhengyuan 于 2020-5-13 17:43 编辑

字典跟列表一样的
dict 改变了
theCopy 也会变
因为 theCopy 获取了 dict 的地址

如果你想让它输出 6 那就得加一个 .copy()
dict={'1':1,'2':2}
theCopy=dict.copy()
dict['1']=5
sum=dict['1']+theCopy['1']
print(sum)

sunrise085 发表于 2020-5-13 17:42:25

本帖最后由 sunrise085 于 2020-5-13 17:44 编辑

你这只是贴标签。dict和theCopy指向同一单元
若想得到6
那应该将第二行修改一下,改为拷贝
theCopy=dict.copy()

看看这个帖子:python细节之2、变量名与标签 变量的赋值与修改

773254968 发表于 2020-5-13 17:53:24

本帖最后由 773254968 于 2020-5-13 17:59 编辑

dict={'1':1,'2':2}#定义字典
theCopy=dict      #这一句的意思是,theCopy和dict代表的同一个东西,
                  #也就是修改theCopy,dict对象也会跟着一起修改
print('theCopy ID=%', id(theCopy))
print('dict ID=%', id(dict))#这里证明theCopy和dict是一个东西。
                        #小结:因为字典是可变对象,也就是和list对象一样,
                        #赋值给另一个变量不是创建新的对象然后赋值过去
                        #theCopy=dict.copy()这样写的话就会创建新的字典对象,他们的id就不是同一个值
dict['1']=5         #所以这里把数据修改成了{'1':5,'2':2}
sum=dict['1']+theCopy['1']#因为都是同一个东西,所以dict['1']是5,theCopy['1']也是5,相加就是10
print(sum)
页: [1]
查看完整版本: 求大神棒棒小白 为什么答案不是6呢