Ao ler a documentação dict.copy()
, ele diz que faz uma cópia superficial do dicionário. O mesmo vale para o livro que estou seguindo (Beazley's Python Reference), que diz:
O método m.copy () faz uma cópia superficial dos itens contidos em um objeto de mapeamento e os coloca em um novo objeto de mapeamento.
Considere isto:
>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
Portanto, presumi que isso atualizaria o valor de original
(e adicionaria 'c': 3) também porque eu estava fazendo uma cópia superficial. Como se você fizer isso para uma lista:
>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
Isso funciona conforme o esperado.
Como as duas cópias são rasas, por que dict.copy()
isso não funciona como eu esperava? Ou meu entendimento de cópia superficial e profunda é falha?