[英]Why can |= do in-place value update for dictionaries in Python?
所以這是代碼
tmp_dict = {}
x = tmp_dict.setdefault("key1", set())
x |= {1,2}
tmp_dict
輸出是
{'key1': {1, 2}}
但是如果我們將第 3 行更改為x = x | {1,2}
x = x | {1,2}
那么輸出將是
{'key1': set()}
所以我很好奇為什么|=
在這里做了這樣的魔法以更新字典。 我以為x = x | {1,2}
x = x | {1,2}
和x |= {1,2}
是等價的,但實際上不是。
這是因為|=
引用了__ior__
,但是|
引用__or__
。
|=
將修改原始x
對象,這會影響tmp_dict
,但修改x = ..
將完全覆蓋x
以便對tmp_dict
的引用將消失。
它只會用集合的並集創建一個名為x
的變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.