Глядя на Queue.py в Python 2.6, я обнаружил, что эта конструкция показалась мне немного странной:
def full(self):
"""Return True if the queue is full, False otherwise
(not reliable!)."""
self.mutex.acquire()
n = 0 < self.maxsize == self._qsize()
self.mutex.release()
return n
Если maxsize
0, очередь никогда не заполнится.
Мой вопрос, как это работает в этом случае? Как 0 < 0 == 0
считается ложным?
>>> 0 < 0 == 0
False
>>> (0) < (0 == 0)
True
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
>>> (0) < (0 == 0)
это явно не так.
n = 0 < self.maxsize == self._qsize()
прежде всего, на любом языке. Если вашим глазам приходится несколько раз метаться по линии вперед и назад, чтобы понять, что происходит, это не очень хорошо написанная строка. Просто разбейте его на несколько строк.