1 > 0 == True -> False

Jussi Piitulainen jpiitula at ling.helsinki.fi
Thu Jan 30 07:08:44 EST 2014


Peter Otten writes:

> Jussi Piitulainen wrote:
> 
> > Thibault Langlois writes:
> > 
> >> Hello,
> >> 
> >> $ python
> >> Python 2.7.4 (default, Sep 26 2013, 03:20:26)
> >> [GCC 4.7.3] on linux2
> >> Type "help", "copyright", "credits" or "license" for more information.
> >> >>> 1 > 0 == True
> >> False
> >> >>> (1 > 0) == True
> >> True
> >> >>> 1 > (0 == True)
> >> True
> >> >>>
> >> 
> >> What am I missing here ?
> > 
> > One or both of the following:
> > 
> >    >>> 0 == True
> >    False
> >    >>> True and False
> >    False
> >    >>> 1 > 0
> >    True
> > 
> > Or the fact that (1 > 0 == True) means ((1 > 0) and (0 == True)),
> > where each expression in such a chain is evaluated once, though in
> > this case it really does not matter since 0 is a literal.
> > 
> > Hm, I don't know if the evaluation short-circuits. I think not, but
> > I've never needed to know, and I don't need to know now.
> 
> It is easy to check though:
> 
> >>> def zero():
> ...     print("zero")
> ...     return 0
> ... 
> >>> def one():
> ...     print("one")
> ...     return 1
> ... 
> >>> def true():
> ...     print("true")
> ...     return True
> ... 
> >>> one() > zero() == true()
> one
> zero
> true
> False
> >>> zero() > one() == true()
> zero
> one
> False
> 
> So yes, evaluation does short-curcuit.

Now I'm experiencing a mild form of information overload. Thanks
anyway :) My guess was wrong.

Now that I think of it, I've implemented a parser and evaluator once
with this kind of chaining, and it may well have short-circuited.



More information about the Python-list mailing list