You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee='https://github.com/rhettinger'closed_at=<Date2015-08-15.04:06:58.958>created_at=<Date2015-08-14.10:06:01.523>labels= ['type-bug']
title='Boolean representation of Q/queue objects does not fit behaviour of lists etc.'updated_at=<Date2015-08-15.04:06:58.956>user='https://bugs.python.org/Frunit'
Usually, list-like objects return False when they are empty and True when at least one element is in the list. However, Queue (Python 2) resp. queue (Python 3) objects always return True. I am aware of that objects should always return True unless otherwise stated, but as queues are (at least in my perception) related to lists, they should behave similarly in this case.
Python3 (similar in Python2):
>>> import queue
>>> q = queue.Queue()
>>> bool(q)
True
(Should be False, in my opinion; the same for PriorityQueue and LifoQueue)
I searched for reasons for returning True in empty Queues, but I could not find any in the net or in the Python docs.
I believe this is intentional; see the documentation of the "empty' method for the motivation. The reason for not just reflecting the result of an empty call in __bool__ is that not doing so forces you to use empty, which gives you an opportunity to learn about the lack of guarantees. And every time you use it, or read it in someone else's code, you are reminded that a Queue is *different* from a list in this very important way.
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: