[Python-ideas] Keyword same in right hand side of assignments (rev)
Jacob Holm
jh at improva.dk
Tue Mar 17 14:21:46 CET 2009
Andre Roberge wrote:
>
>
> On Tue, Mar 17, 2009 at 9:23 AM, <hwpuschm at yahoo.de
> <mailto:hwpuschm at yahoo.de>> wrote:
>
>
> Thank you very much for correctly remarking that the "definition"
> I formulated contradicts the examples I gave and is therefore
> utterly inadecuate:
>
> > It is proposed to introduce a Keyword "same",
> > to be used in the right hand side of assignments, as
> > follows:
>
>
>
> I once wrote a blog post on how an expression like "N = N + 1" was
> confusing to beginners, so I'm sympathetic with the underlying idea.
> (http://aroberge.blogspot.com/2005/05/n-n-1.html Note that there
> are much better explanations for naming objects in Python than this
> old post I wrote.)
>
> However, I am -1 on this proposal. IMO, it decreases readability and
> achieves very little in terms of clearing up the confusion.
>
> Quick test: which is the easier to read and get right?
>
> n = same + 1
> n = sane + 1
> n = n + 1
>
I believe that as soon as the left-hand side stops being a simple
variable and it is used in non-trivial expressions on the right-hand
side, using the keyword would help clarify the intent. What I mean is
that the examples you should be looking at are more like:
A[n+1] = same*same + 1
B[2*j].foo = frobnicate(same, same+1)
...
If you try expanding these into current python with minimal change in
semantics you will end up with something like
_1 = n+1
_2 = A[_1]
A[_1] = _2*_2 + 1
del _1
del _2
_1 = B[2*j]
_2 = _1.foo
_1.foo = frobnicate(_2, _2+1)
del _1
del _2
which is much less readable.
I still think that the cost of a new keyword is probably too high a
price to pay, but I like the idea.
Jacob
More information about the Python-ideas
mailing list