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