python 中 var = ({},) * 2 和 var = ({}, {}) 有什么区别? 请解释为什么第一个是浅拷贝而第二个不是。
以下代码返回 True。
dict_a, dict_b = ({},) * 2
dict_a["anything"] = "whatever"
return dict_a == dict_b
虽然这个返回 False。
dict_a, dict_b = ({}, {},)
dict_a["anything"] = "whatever"
return dict_a == dict_b
*2
只是将同一字典的引用传递给两个变量。
>>> dict_a, dict_b = ({},) * 2
>>> dict_a
{}
>>> id(dict_a)
4297720960
>>> id(dict_b)
4297720960
在第二个示例中,您创建了两个不同的字典。
>>> dict_a, dict_b = ({}, {},)
>>> id(dict_a), id(dict_b)
(4297720960, 4299571520)