Ifs and assignments

Terry Reedy tjreedy at udel.edu
Fri Jan 3 03:53:53 EST 2014


On 1/2/2014 8:20 PM, Mark Lawrence wrote:
> On 03/01/2014 00:57, Gary Herron wrote:
>> On 01/02/2014 01:44 PM, John Allsup wrote:
>>> The point of my original post was that, whilst C's
>>>   if( x = 2 ) { do something }
>>> and
>>>   if( x == 2 ) { do something }
>>> are easy to confuse, and a source of bugs, having a construct like
>>> follows:
>>>
>>> if x == 2:
>>>     do something # what happens at present
>>> if testFunc() as x:
>>>     do something with x
>>>
>>> using the 'as' syntax that appears with 'with' and 'except', would allow
>>> for the advantages of C style assignments in conditionals but without
>>> the easy confusion, since here the syntax is significantly different
>>> between assignment and equality testing (rather than a character apart
>>> as happens with C).
>>>
>>> This occurs further down in my original post (past the point where you
>>> inserted your reply).
>>>
>>> Another post suggested a workaround by defining a 'pocket' class, for
>>> which I am grateful.
>>>
>>> John
>>
>> Sorry.  I shot off my answer before reading the whole post.  That's
>> never a good idea.
>>
>>
>> After reading to the end, I rather like your suggestion.  It works well
>> in your example, , nicely avoids the C/C++ trap, and has some
>> consistency with other parts of Python.
>>
>> Gary Herron
>>
>>
>
> I liked the look of this as well.  It ought to go to python ideas, or
> has it been suggested there in the past?

Yes, and rejected (I am quite sure). Consistency would 'demand' at least 
"while expr as target" and possibly "for i in iterable_expr as target".


-- 
Terry Jan Reedy




More information about the Python-list mailing list