On 7/9/2015 8:10 PM, candide wrote:
The official doc explains that :
Python evaluates expressions from left to right.
cf. https://docs.python.org/3.3/reference/expressions.html#evaluation-order
But consider the following snippet :
t=[2020, 42, 2015]
t*(1+int(bool(t.sort())))
[42, 2015, 2020]
Is there not some contradiction with left-right evalutation?
No, as shown by the disassembled byte code
>>> dis.dis("t*(1+int(bool(t.sort())))")
1 0 LOAD_NAME 0 (t)
3 LOAD_CONST 0 (1)
6 LOAD_NAME 1 (int)
9 LOAD_NAME 2 (bool)
12 LOAD_NAME 0 (t)
15 LOAD_ATTR 3 (sort)
18 CALL_FUNCTION 0 (0 positional, 0 keyword pair)
21 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
24 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
27 BINARY_ADD
28 BINARY_MULTIPLY
29 RETURN_VALUE
t.sort() sorts in place and returns None
--
Terry Jan Reedy
--
https://mail.python.org/mailman/listinfo/python-list