[Python-ideas] Inline assignment expression
Jervis Whitley
jervisau at gmail.com
Sat Mar 14 14:47:01 CET 2009
http://bugs.python.org/issue1714448 had an interesting proposal that I thought
might be worthwhile discussing here.
if something as x:
however, of greater use would be assignment expressions that allow:
if (something as x) == other:
# can now use x.
I propose that we implement assignment expressions that would allow assignments
to be made any place that expressions are currently valid. The
proposal uses the
(nominal) right arrow (RARROW) '->' to indicate the assignment. The
form would look
like this:
EXPR -> VAR
which translates to
VAR = EXPR
(EXPR)
Expression (EXPR) is evaluated and assigned to target VAR. The value of EXPR is
left on the top of stack.
another toy example to think about:
while len(expensive() -> res) == 4:
dosomething(res)
A patch has been uploaded to the named issue in the bug tracker. I encourage
you to try it out (py3k at the moment). As I mentioned earlier the
exact syntax is only nominal. We needn't use the RARROW if consensus
is against that, it is a simple operation to change this to any of
('becomes', 'into', 'assigns' ...
I look forward to your comments.
Cheers,
Jervis
More information about the Python-ideas
mailing list