[Info] PEP 308 accepted - new conditional expressions
Reinhold Birkenfeld
reinhold-birkenfeld-nospam at wolke7.net
Fri Sep 30 17:06:25 EDT 2005
Rocco Moretti wrote:
> Reinhold Birkenfeld wrote:
>> Hi,
>>
>> after Guido's pronouncement yesterday, in one of the next versions of Python
>> there will be a conditional expression with the following syntax:
>>
>> X if C else Y
>
> Any word on chaining?
>
> That is, what would happen with the following constructs:
>
> A if B else C if D else F
> A if B if C else D else F
>
> The first one is the tricky bit - it could be either
>
> (A if B else C) if D else F
> or
> A if B else (C if D else F)
>
> I'd expect the former from left-> right semantics, but reading the
> unparenthesized form, I'd see "A if B else ..." note that B is true, and
> conclude the expression evaluated to A (which would be wrong if D is false).
It will be
A if B else (C if D else F).
Quote:
"""
The priorities will be such that you can write
x = A if C else B
x = lambda: A if C else B
x = A if C else B if D else E
But you'd have to write
if (A if C else B):
[x for x in seq if (A if C else B)]
A if (X if C else Y) else B
(A if C else B) if D else E
Note that all these are intentionally ugly. :)
"""
Reinhold
More information about the Python-list
mailing list