簡體   English   中英

為什么 |= 可以在 Python 中對字典進行就地值更新?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM