王亦可 发表于 2020-11-29 21:12:28

python中字典的问题

问题:我有一个问题:
a = {1:'one',2:'two',3:'three'}
b = a
id(a)
id(b)
以上代码执行后发现id(a)和id(b)的结果一致,是不是说明两个变量a,b都是表示这个字典?
那为什么在执行完a = {}之后,b的值没有变化呢?

小甲鱼的铁粉 发表于 2020-11-29 21:24:22

以为b = a是浅拷贝,他们地址是相同,所以单独改变a时,编译器回再开辟一个内存地址给a,这时a和b的地址就不一样了,所以b不变

jackz007 发表于 2020-11-29 22:07:47

    a = {1:'one',2:'two',3:'three'}# 把变量 a 绑定到字典对象 {1:'one',2:'two',3:'three'} ,从此,a 就代表这个对象
    b = a                            # 把变量 b 绑定到变量 a 所绑定的对象上,从此,a、b 都代表同一个字典对象
    a = {}                           # 把变量 a 重新绑定到新的字典对象 {} 上,从此,a 代表新对象 {},b 仍然代表原来的对象

sunrise085 发表于 2020-11-29 22:10:36

python中变量赋值,就是贴标签,
执行第一句赋值,是把标签a贴在这个字典上
执行b=a相当于把标签b也贴在了这个字典上
所以他俩的id是一样的

若再执行a={},相当于把标签a撕下来贴在另一个空字典上了,但是此时b没有改变位置,所以b没变化
这是你可以再看看他俩的id,会发现a的id改变了,b的id没有改变

王亦可 发表于 2020-11-30 20:30:08

喔喔,我懂了,非常感谢
页: [1]
查看完整版本: python中字典的问题