On 2009-07-31 15:11, James Stroud wrote:
Python 2.5:

mbi136-176 211% python
*** Pasting of code with ">>>" or "..." has been enabled.
########################################################################
## ipython ##
########################################################################
py> b = 4 if True else b
py> b
4


Isn't the right side supposed to be evaluated first?

The right side of the assignment or the if-else expression? The "expr1 if condition else expr2" expression evaluates condition, then either expr1 or expr2 depending on the result. The other expression is unevaluated.

>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> b
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
>>> 5 if True else b
5
>>> a if False else 5
5

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
 that is made terrible by our own mad attempt to interpret it as though it had
 an underlying truth."
  -- Umberto Eco

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to