Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #67949

Re: Ternary operator associativity

From Terry Reedy <tjreedy@udel.edu>
Subject Re: Ternary operator associativity
Date 2014-03-06 15:15 -0500
References <f3bd8da6-dc2e-4b05-b50b-3a2c9d825367@googlegroups.com> <20140306125958.31e096f8@bigbox.christie.dr>
Newsgroups comp.lang.python
Message-ID <mailman.7873.1394136963.18130.python-list@python.org> (permalink)

Show all headers | View raw


On 3/6/2014 1:59 PM, Tim Chase wrote:
> On 2014-03-06 03:34, candide wrote:
>> According to the official documentation, the ternary operator has
>> left-to-right associativity
>>
>>>>> left_to_right = (0 if 1 else 0) if 0 else 1
>>>>> right_to_left = 0 if 1 else (0 if 0 else 1)
>
> I'd never want to rely on my own ability to remember the language
> spec, so I strongly advocate for making it explicit with parens
> regardless of what the language defines.  And that's if I ever created
> such a mess in the first place.  If you have more than one pair of
> conditional expressions in a single assignment, I'd suggest that it's
> a code-smell that could use refactoring for clarity/disambiguity.

It is intended and part of the PEP discussion that one be able to write 
chained conditional expression in Python

x = (a1 if c1 else
      a2 if c2 else
      a3 if c3 else
      a4)

without extra ()s, similar to what one can write in C (if I remember 
correctly)

x = c1 ? a1 :
     c2 ? a2 :
     c3 ? a3 :
          a4

both being abbreviations for chained if-elses

if   c1: x = a1
elif c2: x = a2
elif c3: x = a3
else:    x = a4

In all three cases, the conditions are evaluated in 1,2,3 order, each 
before the corresponding expression.

-- 
Terry Jan Reedy

Back to comp.lang.python | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

Ternary operator associativity candide <c.candide@laposte.net> - 2014-03-06 03:34 -0800
  Re: Ternary operator associativity Michael Torrie <torriem@gmail.com> - 2014-03-06 10:47 -0700
  Re: Ternary operator associativity Terry Reedy <tjreedy@udel.edu> - 2014-03-06 13:52 -0500
  Re: Ternary operator associativity Tim Chase <python.list@tim.thechases.com> - 2014-03-06 12:59 -0600
  Re: Ternary operator associativity Terry Reedy <tjreedy@udel.edu> - 2014-03-06 15:15 -0500

csiph-web