[Python-ideas] Keyword same in right hand side of assignments (rev)
Steven D'Aprano
steve at pearwood.info
Wed Mar 18 00:29:59 CET 2009
On Tue, 17 Mar 2009 11:23:23 pm hwpuschm at yahoo.de wrote:
> What I would like is to extend the augmented assignment
> and make it easy to understand for naive readers.
[...]
> 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
Instead of the proposed "lst = [5,6] + same" or the
obfuscated "lst.reverse(); lst.extend([6,5]); lst.reverse()", what
about this simple assignment?
lst = [5, 6] + lst
Instead of the proposed "inmutable = same*(same+1)" or the
obfuscated "unused=inmutable+1; inmutable*=unused; del unused", what
about the simple:
inmutable = inmutable*(inmutable+1)
Since your claimed intention is to make it easy for naive users, why
replace the standard idiom:
xx += 5
with an assignment containing a mysterious "same"? Many of those naive
users will surely assume "same" is a variable name, not a magic
keyword, and spend much time looking for where it is assigned. I
predict that if your idea goes ahead, we'll get dozens of questions "I
can't find where the variable same gets its value from", and we'll have
to explain that it is a magic variable that gets its value from the
left hand side of the assignment.
One last question -- what should happen here?
x, y, z = (same, same+1, same+2)
--
Steven D'Aprano
More information about the Python-ideas
mailing list