question about True values

Steven D'Aprano steve at REMOVE.THIS.cybersource.com.au
Sat Oct 28 07:15:31 EDT 2006


On Sat, 28 Oct 2006 11:42:42 +0200, Marc 'BlackJack' Rintsch wrote:

> In <pan.2006.10.28.07.45.14.198030 at REMOVE.THIS.cybersource.com.au>, Steven
> D'Aprano wrote:
> 
>> On Fri, 27 Oct 2006 11:25:09 -0700, Carl Banks wrote:
>> 
>>> Iterators do have overlapping uses with lists, but the "if a:" doesn't
>>> work for them, so it's moot.
>> 
>> Sure it works for iterators.
>> 
>>>>> it = iter([0])
>>>>> bool(it)
>> True
>>>>> it.next()
>> 0
>>>>> bool(it)
>> False
> 
> It works for *this* iterator.  By accident.

Blimey, you're right. That can't be good.

In fact, it made a certain BDFL pretty mad:

http://mail.python.org/pipermail/python-dev/2005-September/056594.html

Okay, so all iterators are intentionally *supposed* to be True, always,
even if they are exhausted. As Guido says, don't treat iterators as
containers.

Fair enough.


-- 
Steven.




More information about the Python-list mailing list