My newbie annoyances so far

Paul McGuire ptmcg at austin.rr.com
Fri Apr 27 21:44:07 CEST 2007


On Apr 27, 12:42 pm, John Nagle <n... at animats.com> wrote:
> Dennis Lee Bieber wrote:
> > On 27 Apr 2007 08:34:42 -0700, Paul McGuire <p... at austin.rr.com>
> > declaimed the following in comp.lang.python:
>
> >>deficient - ternary expressions are now part of the language after
> >>years of refugees from C and C++ asking how to write "a = b ? c : d",
> >>and now they'll get to puzzle/gripe over mapping this to "a = c if b
> >>else d".  But as a newbie, you need to invest a little more time and
>
> >    And I'll probably ignore those expressions whenever I do get around
> > to 2.5+... That syntax, in my mind, just... stinks...
>
>     ALGOL used "expression IF"; you could write
>
>         x := (IF a > b THEN a ELSE b);
>
> but that doesn't map well to an indentation-based language.
>
>     A syntax suitable for Python, now that there's a bool type, might
> be to define ".if()" for "bool".  Then one could write
>
>         (a > b).if(a,b)
>
> which is better than adding an operator.
>
>     Such things are useful in formatting expressions.
>
>         msg = 'Unit is %s' % (unitstatus.if("on","off"),)
>
> but not really essential.
>
>                                 John Nagle

I think a big part of the current syntax is that it still supports
short-circuiting.  In

x if a else y

y never has to be evaluated if condition a is true.  When calling
a.if(x,y), both x and y have to be evaluated.

-- Paul




More information about the Python-list mailing list