Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #93634

Re: Evaluation order

From Terry Reedy <tjreedy@udel.edu>
Subject Re: Evaluation order
Date 2015-07-10 08:27 -0400
References <436cb6ac-59a4-44f1-be60-cdec1e509296@googlegroups.com> <mailman.379.1436493764.3674.python-list@python.org> <ea920a46-804f-45dd-9c6b-1fb4c278be49@googlegroups.com>
Newsgroups comp.lang.python
Message-ID <mailman.391.1436531282.3674.python-list@python.org> (permalink)

Show all headers | View raw


On 7/10/2015 8:04 AM, candide wrote:
> Le vendredi 10 juillet 2015 04:02:56 UTC+2, Chris Angelico a écrit :
>> I'm not sure what contradiction you're referring to, here. The
>> evaluation that you're pointing out says, as Terry showed via the
>> disassembly, that Python's first action is to look up the name 't' and
>> grab a reference to whatever object it points to.
>
> But in order to perform an operation, the interpreter has to evaluate
 > the operands and "evaluating" is not "grabbing a reference to".

In the CPython, evaluating a name is implemented as getting the 
reference corresponding to the name.

>> The execution of
>> t.sort() has to happen before the multiplication, because of the
>> parentheses.

> Official docs explains what evaluation is :
>
> When the name is bound to an object, evaluation of the atom yields that object.

Conceptually, that is exactly right.  How that is implemented on a 
computer in CPython is to load the address on the top of the virtual 
machine stack.

> So, since the Python interpreter is performing evaluation from left to right,
 > the first operand of the expression :
>
> t*(1+int(bool(t.sort())))
>
> evaluates to [2020, 42, 2015].

't' evaluates to the ***mutable*** list that 't' is bound to.

>  Next, the second operatand evaluates to the integer 1.

And in the process of that evaluation, the list is sorted.


-- 
Terry Jan Reedy

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Evaluation order candide <c.candide@laposte.net> - 2015-07-09 17:10 -0700
  Re: Evaluation order Terry Reedy <tjreedy@udel.edu> - 2015-07-09 21:45 -0400
  Re: Evaluation order Chris Angelico <rosuav@gmail.com> - 2015-07-10 12:02 +1000
    Re: Evaluation order candide <c.candide@laposte.net> - 2015-07-10 05:04 -0700
      Re: Evaluation order Ned Batchelder <ned@nedbatchelder.com> - 2015-07-10 05:19 -0700
      Re: Evaluation order Terry Reedy <tjreedy@udel.edu> - 2015-07-10 08:27 -0400
      Re: Evaluation order Chris Angelico <rosuav@gmail.com> - 2015-07-11 00:27 +1000
      Re: Evaluation order Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-07-10 15:49 +0100

csiph-web