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

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Fri Apr 2 20:53:16 EDT 2010


On Fri, 02 Apr 2010 20:12:59 +0000, kj wrote:

> In <mailman.1326.1269971785.23598.python-list at python.org> Steve Holden
> <steve at holdenweb.com> writes:
[...]
>>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.

Not according to the PEP. No fewer than 16 alternatives were put to a 
vote, and with no clear winner (but many obvious losers) Guido made the 
final decision.

http://www.python.org/dev/peps/pep-0308/

Although the results of the voting are given, unaccountably no final 
tally was given. Possibly because nobody could agree on how to tally the 
votes. Using a simple counting procedure (I give 3 votes for a rank1 
vote, 2 votes for a rank2 and 1 for a rank3, signed according to whether 
it was an Accept or Reject vote) I find the top four candidates were:

C.  (if C: x else: y)     27%
D.  C ? x : y             20%
B.  if C then x else y    13%
A.  x if C else y         11%

with everything else an order of magnitude smaller (6% or less). If you 
choose a different voting scheme, no doubt you will get different results.

Since no candidate syntax got a majority of the vote, it came down to the 
only vote that really mattered: Guido's.

    Ankh-Morpork had dallied with many forms of government 
    and had ended up with that form of democracy known as 
    One Man, One Vote. The Patrician was the Man; he had the 
    Vote. -- (T. Pratchett, "Mort")


Guido did say "Note that all these are intentionally ugly" but this was 
followed by a smiley and was obviously tongue-in-cheek.

http://mail.python.org/pipermail/python-dev/2005-September/056846.html


> "Let's preserve readability by making the syntax so ugly that people
> won't use it."???  That's just perverse.  (It would have been more
> reassuring if the reason had been simply that Guido has an inexplicable
> dislike of ternary expressions just like one may have an inexplicable
> dislike of Broadway musicals.)

"Inexplicable"? They're musicals, and they're on Broadway. Surely that's 
two good reasons to dislike them *wink*


> Second, sticking the test between the two alternatives goes against a
> vast tradition in programming languages.

As I've pointed out before, it is natural syntax in English. Not 
necessarily the most common, but common enough to be completely 
unexceptional:

"I'll be there in ten minutes, if I can find a parking space close by, 
otherwise you should start without me."



-- 
Steven



More information about the Python-list mailing list