
On 9 June 2015 at 01:24, Wolfram Hinderer <wolfram.hinderer@googlemail.com> wrote:
Am 08.06.2015 um 14:38 schrieb Nick Coghlan:
On 8 June 2015 at 22:12, Steven D'Aprano <steve@pearwood.info> wrote:
[In relation to named subexpressions leaking to the surrounding namespace by default]
What does "x[(a.b as b)] = b" mean
surely it simply means the same as:
b = a.b x[b] = b
Right, but it reveals the execution order jumping around in a way that is less obvious in the absence of side effects.
I'm lost. The evaluation order of today (right hand side first) would make "x[(a.b as b)] = b" mean
x[a.b] = b b = a.b
(assuming looking up a.b has no side effects).
That assumption that the LHS evaluation has no side effects is the one that gets revealed by named subexpressions:
def subscript(): ... print("Subscript called") ... return 0 ... def value(): ... print("Value called") ... return 42 ... def target(): ... print("Target called") ... return [None] ... target()[subscript()] = value() Value called Target called Subscript called
Cheers, Nick. -- Nick Coghlan | ncoghlan@gmail.com | Brisbane, Australia