Conditional expressions - PEP 308

Paddy paddy3118 at netscape.net
Wed Jan 31 02:35:29 EST 2007


On Jan 30, 9:51 pm, "Colin J. Williams" <c... at sympatico.ca> wrote:
> It would be helpful if the rules of the game were spelled out more clearly.
>
> The conditional expression is defined as X if C else Y.
> We don't know the precedence of the "if" operator.  From the little test
> below, it seem to have a lower precedence than "or".
>
> Thus, it is desirable for the user to put the conditional expression in
> parentheses.
>
> Colin W.
>
> # condExpr.py
> # PEP 308 defines a conditional expression as X if C else Y
> # but we don't know exactly what X is supposed to be.
> # It doesn't seem to be spelled out in the syntax.
>
> def main():
>    names= ['abc', 'def', '_ghi', 'jkl', '_mno', 'pqrs']
>    res= ''
>    for w in names:
>         res= res + w if w[0] != '_' else ''
>         z= 1
>    print 'res1:', res
>
>    res= ''
>    for w in names:
>         res= res + (w if w[0] != '_' else '')
>         z= 1
>    print 'res2:', res
>
> if __name__ == '__main__':
>    main()
>
> Result:
> [Dbg]>>>
> res1: pqrs
> res2: abcdefjklpqrs

But to give them credit though, in Whats new in Python 2.5: PEP 308,
they do mention that as a matter of style you should parenthesise the
if-expression, and the example given consistes of just a simple
assignment of the if-expr to a name.
- Paddy.




More information about the Python-list mailing list