Patrząc na Queue.py w Pythonie 2.6, znalazłem tę konstrukcję, która wydała mi się nieco dziwna:
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
Jeśli maxsize
jest 0, kolejka nigdy nie jest pełna.
Moje pytanie brzmi, jak to działa w tym przypadku? Jak 0 < 0 == 0
jest uważane za fałsz?
>>> 0 < 0 == 0
False
>>> (0) < (0 == 0)
True
>>> (0 < 0) == 0
True
>>> 0 < (0 == 0)
True
>>> (0) < (0 == 0)
wyraźnie nie jest.
n = 0 < self.maxsize == self._qsize()
w pierwszej kolejności, w żadnym języku. Jeśli twoje oczy muszą kilka razy przesuwać się w tę iz powrotem po linii, aby dowiedzieć się, co się dzieje, nie jest to dobrze napisana linia. Po prostu podziel go na kilka wierszy.