Python paradigms

Tim Peters tim_one at
Sun Apr 9 00:39:21 EDT 2000

[Nick Maclaren]
> Well, starting to use Python, there are two Algol 68 constructions
> that I sorely miss.  Here is an example of them in C:
>     if ((x = non_trivial_expression) != NULL) {
>         do_something_using_x;
>     } elif ((x = another_expression) != NULL) {
>         do_something_else_using_x;
>     } ...
> and:
>     x = (a != NULL ? a[i]->weeble : 0) + (b != NULL ? b[i]->wombat : 0)
> It is pretty obvious why Python doesn't have the former, but I am
> a bit puzzled as to the reason for the lack of the latter.  Or
> maybe I just haven't found it yet :-)

It's just a FIR (Frequently Ignored Request <wink>).  3-argument getattr and
dict.get() and builtin max() and min() cover many common cases, and nobody
has screamed loud enough to overcome Guido's reluctance to add more syntax
for others, which *can* be done easily with obvious if/else sequences.  Note
that the C

    a() ? b() : c()

is equivalent (including evaluating only one of b and c) to the Python

   (a() and [b()] or [c()])[0]

But you'll be shot if you ever use the latter, so forget I said that.

no-relief-in-sight-ly y'rs  - tim

More information about the Python-list mailing list