0
Почему пустой PriorityQueue не оценивает значение False
, как и другие iterables в Python?Почему оценка bool пустого PriorityQueue True?
>>> from queue import PriorityQueue
>>> q1 = PriorityQueue()
>>> bool(q1)
True
>>> q1.qsize()
0
Следующий вопрос: «Почему они реализовали функцию qsize() вместо __len __()?» Не зная ничего, кроме комментариев в источнике, кажется, что из-за многопоточности и условий гонки qsize() возвращает только приблизительный размер, поэтому они, вероятно, не хотели использовать магический метод с неожиданными результатами. Спасибо, Джон. – BeardedOne85
@ BeardedOne85 да, это так; реализация '__len__' подразумевает, что они действительно знают, что это такое! – jonrsharpe
@ BeardedOne85 Теперь они просто должны быть согласованными и документировать 'empty()' as "Return True, если очередь примерно пуста." :-) –