On 6/24/2011 12:32 AM, Chetan Harjani wrote:
x=y="some string"
And we know that python interprets from left to right.
Read the doc. "5.14. Evaluation order
Python evaluates expressions from left to right. Notice that while evaluating an assignment, the right-hand side is evaluated before the left-hand side."
another example:
(1,2) + 3,
here, python raises a  TypeError "can only concatenate tuple(not int) to
tuple" but we know (3,) is a tuple as seen by following:
But "(3,) is not what you wrote;-). The comma operator has the lowest 
precedence, although this is not as clear in the doc as it should be. 
Your expression is parsed as ((1,2)+3),. Parentheses have the highest 
precedence. The combination of both facts is why tuples often need to be 
parenthesized, as it should be here and why you added the first pair 
instead of writing 1,2 + 3,.
Disassembly of bytecode shows how an expression was parsed.
>>> from dis import dis
>>> dis('(1,2)+3,')
  1           0 LOAD_CONST               3 ((1, 2))
              3 LOAD_CONST               2 (3)
              6 BINARY_ADD
              7 BUILD_TUPLE              1
             10 RETURN_VALUE

--
Terry Jan Reedy

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

Reply via email to