python 中 var = ({},) * 2 和 var = ({}, {}) 有什么区别?

问题描述 投票:0回答:1

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
python python-3.x
1个回答
0
投票

*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)
© www.soinside.com 2019 - 2024. All rights reserved.