簡體   English   中英

為什么get和setdefault的這種組合不能按預期工作?

[英]Why does this combination of get and setdefault not work as expected?

在下面的代碼中,我期望x == True除了x == False

k = 'key'
d = dict()
x = d.get(k, not d.setdefault(k, False))

print(d) # {'key': False}
print(x) # False

為什么會這樣?

無論如何,我想要一個在第一次調用時返回True,否則返回False的方法。 我想實現一個做到這一點的類並不難,但是我懷疑應該有一種內置的方式。

嘗試使用Python 3.6 Anaconda。

dict.get()的參數在調用.get()之前先求值。 因此, setdefault已經發生。 怎么樣:

x = d.get(k) or not d.setdefault(k, True)

測試代碼:

k = 'key'
d = dict()
x = d.get(k) or not d.setdefault(k, True)

print(d)  # {'key': False}
print(x)  # False

結果:

{'key': True}
False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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