[Python-ideas] Assignment decorators (Re: The Descriptor Protocol...)
p.f.moore at gmail.com
Tue Mar 8 10:13:41 CET 2011
On 8 March 2011 03:50, Raymond Hettinger <raymond.hettinger at gmail.com> wrote:
> Just for the fun of it, here's my offering:
> a := gizmo(arg1, arg2)
> is equivalent to
> a = gimzo(arg1, arg2, __name__='a')
This is my favourite so far. I was wondering when someone would mention :=...
> * Doesn't rewrite the order of arguments
> * Keep the current '@' notation unambiguous
> * Still looks like an assignment.
> * Would give a meaningful error message if gizmo() weren't expecting a name
> * Doesn't look like perl
> * Doesn't twist your mind into a pretzel
Speak for yourself :-)
> * No new keywords
> * Easy to adapt any existing tools that need to know their own name
> * Doesn't seem like magic or spooky action at a distance
> * The program still looks like a Python program
> * I'm still not sure that the "problem" is worth solving.
> * Between this and function annotations, it looks like Pascal is coming back.
Didn't Algol also use :=? If so, we can think of it as Algol coming
back, and add call by name as well, for bonus fun :-)
* Also, still doesn't give any guidance as to what should be allowed
on the LHS (which is orthogonal to the syntax discussion, I know, but
still a significant sticking point for any proposal). My view is bare
names only, because if you allow anything else, the called function
ends up having to parse a string representation.
* Actually, also add that the syntax is very (surprisingly)
restrictive. The RHS *has* to be a bare function call, near enough. So
that makes it even less like an assignment...
I understand the frustration that drives people to want a solution,
but I don't think any of the proposals so far are unambiguous enough
to qualify (even if the problem were important enough to justify new
More information about the Python-ideas