在下面我会期望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。
答案 0 :(得分:1)
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