[Python-ideas] the optional "as" statement inside "if" statements
Steven D'Aprano
steve at pearwood.info
Sun Jul 1 02:24:47 CEST 2012
Calvin Spealman wrote:
> On Sat, Jun 30, 2012 at 9:59 AM, <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 is probably the best solution to the problem
What problem?
I'm not convinced that what fiatjaf at yahoo.com.br describes is an actual
problem that needs solving. So what if you have to bind a reference to a name
before using it in an if statement? That's not a problem. "Solving" it doesn't
make programming any easier, or give you more power. There is absolutely no
difference in programming power or expressiveness between:
if func(a, b) as x:
process(x)
and
x = func(a, b)
if x:
process(x)
(In fact, I would argue that the second is *slightly* more readable, as the
name binding comes first, not last.)
At best, this proposal merely adds a trivial bit of syntactic sugar to the
language. Contrast that with "import as", which truly does add expressiveness
to the language. Working around the lack of "import as" if Python didn't have
it would not be so easy. The obvious solution is also the wrong solution:
# import long_name as ln
import long_name
ln = long_name
del long_name
That's wrong, because it has the side-effect of replacing, then deleting, any
existing binding to long_name. "import as" does not do that.
Good suggestions for syntactic sugar should add power or expressiveness to the
language, not merely save a line of code or a few keystrokes. As given, this
idea becomes one more special case for people to learn, with no corresponding
benefit.
-1 on the idea as given.
By the way, to the Original Poster, please configure your mail client to
display a name that we can refer to you by, or sign your posts. It doesn't
have to be your real name, just something that you would like to be known as.
It is annoying to have to refer to you by your email address.
--
Steven
More information about the Python-ideas
mailing list