(a==b) ? 'Yes' : 'No'

Ethan Furman ethan at stoneleaf.us
Fri Apr 2 16:54:44 EDT 2010


kj wrote:
> In <mailman.1326.1269971785.23598.python-list at python.org> Steve Holden <steve at holdenweb.com> writes:
> 
>> John Nagle wrote:
>>> Chris Rebert wrote:
>>>> On Tue, Mar 30, 2010 at 8:40 AM, gentlestone <tibor.beck at hotmail.com>
>>>> wrote:
>>>>> Hi, how can I write the popular C/JAVA syntax in Python?
>>>>>
>>>>> Java example:
>>>>>    return (a==b) ? 'Yes' : 'No'
>>>>>
>>>>> My first idea is:
>>>>>    return ('No','Yes')[bool(a==b)]
>>>>>
>>>>> Is there a more elegant/common python expression for this?
>>>> Yes, Python has ternary operator-like syntax:
>>>> return ('Yes' if a==b else 'No')
>>>>
>>>> Note that this requires a recent version of Python.
>>>     Who let the dogs in?  That's awful syntax.
>>>
>> Yes, that's deliberately awful syntax. Guido designed it that way to
>> ensure that people didn't aver-use it, thereby reducing the readability
>> of Python applications.
> 
> Is that for real???  It's the QWERTY rationale all over again.  Swell.

The rationale I remember is that it's intended primarily where the 
condition is usually true, with the false only being once in a while.

[snip]

> Second, sticking the test between the two alternatives goes against
> a vast tradition in programming languages.  This tradition inevitably
> fosters habits and expectations when reading code, so going against
> it automatically makes code less readable to all who were educated
> in that tradition.

So you're saying that new languages can't change anything already well 
established?  So much for break-through innovations.

And what about the programmers?  It is good to learn to think in 
different ways.

At any rate, I far prefer it over C's syntax.

~Ethan~



More information about the Python-list mailing list