[Python-Dev] Adding a conditional expression in Py3.0
Gustavo J. A. M. Carneiro
gjc at inescporto.pt
Tue Sep 27 15:11:13 CEST 2005
On Sun, 2005-09-25 at 19:11 +0200, Reinhold Birkenfeld wrote:
> Sokolov Yura wrote:
> > Sorry for looking in every hole.
> > Just a suggestion.
> >
> > A= condition and first or second
> > problem is in case when first in (None,0,[],"").
> > May be invent new operator 'take'.
> > take - returns right operator when left evals to True and stops
> > computing condidtional expression.
> > Then we could write:
> >
> > A = condition take first or second.
> > A = x==y take w or s
> > A = z is not None and q!=12 take [] or allowable(z,q) take [(z,q)] or
> > "Impossible"
> >
> > Ok, it might looks ugly. But may be not.
>
> One of the advantages of (if x then y else z) is that it doesn't require
> the introduction of a new keyword (I think the "then" could be special-
> cased like "as" in the import statement).
This wouldn't look so bad either:
(if x: y else: z)
More realistic example:
def greet(person=None):
print "Hello %s" % (if person is None: "World" else: person)
Not as compact as C's ?:, but more readable and intuitive. It's just
like an if-else construct, but on a single line and () around to make it
look like an expression instead of a statement.
>
> Reinhold
>
--
Gustavo J. A. M. Carneiro
<gjc at inescporto.pt> <gustavo at users.sourceforge.net>
The universe is always one step beyond logic.
More information about the Python-Dev
mailing list