BJörn Lindqvist wrote:
On Wed, Jun 4, 2008 at 2:02 PM, Antoon Pardon <[EMAIL PROTECTED]> wrote:
Now of course noone would defend such a limitation on the grounds
that one doesn't need the general case and that the general case
will only save you some vertical space.

But when it came to the ternary operator that was exactly the
argument used, to defend the lack of it.

As far as I remember, the primary motivation was developers experience
with the ternary operator in other languages, especially C, where it
was found to hurt readability. At least in my experience, it is much
much more common to see the ternary operator making code more
obfuscated than easing readability. Time will tell if Python's if-else
expression will be abused in the same way.

    Expression IF statements are most useful in situations where you can't
have multiple statements.  In C, that was usually in macros, or occasionally
in a function call:

        printf("Boolean value: %s\n", b ? "True" : "False");

was useful, for example.  The syntax was probably a bad choice.
The classic expression IF (an ALGOL extension) was

        x := IF b THEN 1 ELSE 0;

Surrounded with parentheses, that form could be used in any expression
context.

    Given Python's approach to indentation, conditionals
within expressions (and iteration; one could have FOR / YIELD) don't
fit the syntax.  That's why lambda expressions in Python are so limited.
Python already has local functions; you can write:

def foo(n) :
        def bar(m) :
                print "In BAR",n, m
        bar(n+1)

which also allows you to do anything you can do with a lambda expression.
You can have control structure, and it reads like ordinary Python.
So there's no real need for an expression IF operator.

                                John Nagle

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to