weird behaviour of "0 in [] is False"
Sylvain Thenault
sylvain.thenault at nospam.logilab.fr
Tue Nov 30 08:32:59 EST 2004
On Tue, 30 Nov 2004 14:18:30 +0100, Diez B. Roggisch wrote:
>>>>> l = []
>>>>> 0 in (l is False)
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in ?
>> TypeError: iterable argument required
>
> that should be clear - 0 in False can't work.
yes, I forget to mention that it was the third expression which was
bugging me.
>>>>> (0 in l) is False
>> True
>>>>> 0 in l is False
>> False
>
> It seems to stem from a behaviour python exhibits in expressions like
> this:
>
> 3 > 2 > 1
>
> This yields True, while
>
> (3 > 2 ) > 1
>
> yields false. Chaining of operators gets translated like this:
>
> 3 > 2 and 2 > 1
>
> Look in section 5.9 of the language reference.
>
> Then your expression gets translated to:
>
> 0 in l and l is False
>
> which yields False of course.
thanks, I had missed this part of the language reference !
Not yet found an misbehaviour in python... ;)
--
Sylvain Thénault LOGILAB, Paris (France).
http://www.logilab.com http://www.logilab.fr http://www.logilab.org
More information about the Python-list
mailing list