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

Reply via email to