[Python-ideas] the optional "as" statement inside "if" statements
Nick Coghlan
ncoghlan at gmail.com
Sat Jun 30 17:06:39 CEST 2012
On Sat, Jun 30, 2012 at 11:59 PM, <fiatjaf at yahoo.com.br> wrote:
> the idea is to make an variable assignment at the same time that the
> existence of that variable -- which is being returned by a function -- is
> made.
>
> suppose we are returning a variable from the method 'get' from the 'request'
> object and them making some stuff with it, but that stuff we will only do if
> it exists, if not, we'll just pass, instead of writing:
>
> variable = self.request.get('variable')
> if variable:
> print variable
>
> we could write
>
> if self.request.get('variable') as variable:
> print variable
>
> seems stupid (or not?), but with lots of variables to process, this
> pre-assignment could be very unpleasant -- especially if, as the in the
> example case, very little use will be made of the tested variable.
>
> also, the "as" expression already exists and is very pythonic.
This proposal has been considered and rejected many times. It's not
general enough - it *only* works for those cases where the value to be
retained *and* the interesting condition are the same.
Consider the simple case of a value that may be either None (not
interesting) or a number (interesting). Since the interesting values
include "0", which evaluates as False along with None, this limited
form of embedded assignment syntax would not help.
Embedded assignment in C isn't that limited., but nobody has yet
volunteered to take the radical step of proposing "(X as Y)" as a
general embedded assignment syntax. I suggest anyone consider such an
idea do a *lot* of research in the python-ideas archives first, though
(as the idea has seen plenty of discussion). It is not as obviously
flawed as the if-and-while statement only variant, but it would still
involve being rather persuasive to make such a significant change to
the language.
You're also unlikely to get much in the way of core developer feedback
until after the 3.3 release in August.
Cheers,
Nick.
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
More information about the Python-ideas
mailing list