why only one ":" in a line ... ?

Jere Kahanpaa kahanpaa at gstar.astro.helsinki.fi
Mon Aug 19 14:09:16 EDT 2002


Andreas Leitgeb <Andreas.Leitgeb at siemens.at> wrote:
> My motivation for this question:
> During porting some old c-code, that contained lots of simple blocks like:
>   while (cond1) { stmt; if (cond2) break; }
> these lines were simple enough, that their one-lined'ness did not
> obfuscate it, but rather made it more readable.

> In Python however, each of these phrases need to get expanded to  
>   *three* lines, because even the small "stmt" needs it's own line!
>   (I can't put it after the "while" nor in front of the "if")

Wouldn't this do the same think in one Pythonic line:

while (COND1 and not COND2): stmt

Of course, this is not the same in detail: if COND2 is false from the start, the 
Python version fails while the C version loops at least once. Wether this is good 
or bad depends on your real code.

>  I don't want to discuss the worth of putting something in one line,
>  what I could also break up into more lines. It's just that for
>  some blocks, I as a programmer would prefer them in one line.

> e.g.:
>  if 0<n<10: for i in range(n): print i
> this is invalid.
> but why is it invalid ?

Because it is less easy to read than the valid (2-line) version. At least IMO that 

several special case cut

As youself pointed out, allowing 'more stuff in one line' leads to complexity and 
thus is goes against the KISS (Keep It Simple, Stupid) rule.

> So what's so bad about "putting stuff in one line" ?

It's a matter of taste. If you don't like the limits of Python, use Perl.

It's hard to think outside the box when you ARE the box.
                            - unknown, alt.religion.kibology 

More information about the Python-list mailing list