[Python-ideas] Keyword same in right hand side of assignments (rev)
Andre Roberge
andre.roberge at gmail.com
Tue Mar 17 13:41:42 CET 2009
On Tue, Mar 17, 2009 at 9:23 AM, <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
André
>
> >
> > "xx = same + 5" or "...DELETED..." synonymous with "xx += 5"
> > "value = 2*same + 5" synonymous with "value =*2;
> > value +=5"
> > "switch = 1 - same" synonymous with "switch *-1;
> > switch +=1"
> > "lst = same + [5,6]" synonymous with "lst += [5,6]"
> >
> > "lst = [5,6] + same" synonymous with "...DELETED..."
> > "lst[2] = 1/same" synonymous with "lst[2] **=-1"
> >
> > and so on.
>
> What I would like is to extend the augmented assignment
> and make it easy to understand for naive readers.
> I hope the following literary definition
> is consistent enough to convey the correct meaning:
> "whenever it is possible, modify the target IN PLACE
> according to the right hand side expression.
> If it is not possible to do such a thing,
> substitute the target object with
> an object that is build according to the right hand side expression
> and subsequently deleted"
>
> The following examples should be correct:
> "xx = same + 5" synonymous with "xx += 5"
> "value = 2*same + 5" synonymous with "value =*2; value +=5"
> "switch = 1 - same" synonymous with "switch *-1; switch +=1"
> "lst = same + [5,6]" synonymous with "lst += [5,6]"
> "lst[2] = 1/same" synonymous with "lst[2] **=-1"
> The following examples would be extensions:
> "lst = [5,6] + same" synonymous with
> "lst.reverse(); lst.extend([6,5]); lst.reverse()"
> "inmutable = same*(same+1)" synonymous with
> "unused=inmutable+1; inmutable*=unused; del unused"
>
> There seems to be no really simple expression for the above extensions,
> and I take that as an indication
> that the proposed feature could be quite useful.
>
>
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20090317/906a5d8c/attachment.html>
More information about the Python-ideas
mailing list