
On Wed, Jun 1, 2011 at 12:43 PM, Rob Cliffe <rob.cliffe@btinternet.com> wrote:
My first reaction was: +1 on the proposed change. It seemed logical.
Then I had a reservation: it would widen the semantic difference between x += 1 and x = x + 1 which could trip someone innocently making a "trivial" code change from the former to the latter (x unintentionally becomes a local).
So how about going further and say that x is only interpreted as local if there is at least one NON-augmented assignment in which x appears as a target on the LHS but x does NOT appear on the RHS? I.e. x = x + 1 (like "x += 1") does not (by itself) make x local.
Or is this getting too hard to explain?
I think so; it also has the same disadvantage you mention of getting a semantic change from seemingly neutral changes, but for other changes. For example x = 1 if x == 0 else x-1 would keep x global, but changing it to: if x == 0: x = 1 else: x = x-1 would not do so. -- André Engels, andreengels@gmail.com