For review: PEP 308 - If-then-else expression
Carlos Ribeiro
cribeiro at mail.inet.com.br
Sat Feb 8 18:58:34 EST 2003
On Saturday 08 February 2003 03:00 pm, holger krekel wrote:
> IMO Laura emphasized how good enforcing indentation is for
> readability. Writing 'x and y or z' or 'x if y else z'
> (or list-comps for that matteR) undermines readability.
In some cases, too many indentation levels can be a problem. The type of code
that I write most of the time - scripts to filter and prepare analytical
reports based on relational data - is full of simple tests that can be
conveniently written as conditional expressions (Things like substituting a
null value with zeros, or fixing fields that were left unassigned in the
original database). By doing this, the program structure would be much
cleaner, without four line 'if' blocks that are not part of the program
logic, but are there to do simple translations and adjustments on the data
being processed.
> I think what *could* be more useful is something like
>
> <expression1> except <error>: <expression2>
>
> which enhances Python's philosophy of not requiring
> Look-before-you-leap. Hopefully it's obvious what
> this does and IMO it reads comparatively well because
> you don't have three entities (one condition and two expressions)
> to parse. With it you can substitute stuff like
>
> try:
> result = something.method()
> except AttributeError:
> result = None
>
> with
>
> result = something.method() except AttributeError: None
>
> which reads from left to right. Maybe i just have been
> working too much with exceptions, lately :-)
You hit a chord, here - that's would be a good substitute for almost all of my
usages of a conditional operator. Real databases aren't perfect; it is common
to have a few records with missing or invalid fields that have to be
effectively filtered or ammended when processing the data. Of course, it is
much better to validate the data on input, but there is a limit on what you
can do in practice; for example, too much validation may turn a system
unusable, because missing data is sometimes a fact of life. And even you try
to enforce it, people always find a way around, but that's another matter
entirely. In the end you have to deal with all these exceptions when building
analytical reports, and your proposal comes perfect in this situation.
Carlos Ribeiro
cribeiro at mail.inet.com.br
More information about the Python-list
mailing list