A question about readability

rusi rustompmody at gmail.com
Fri Dec 7 20:12:25 CET 2012


On Dec 7, 6:46 pm, Marco <name.surn... at gmail.com> wrote:
> Hi all, do you think this code:
>
> $ more myscript.py
> for line in open('data.txt'):
>      result = sum(int(data) for data in line.split(';'))
>      print(result)
>
> that sums the elements of the lines of this file:
>
> $ more data.txt
> 30;44;99;88
> 11;17;16;50
> 33;91;77;15
> $ python3.3 myscript.py
> 261
> 94
> 216
>
> is explicit enough? Do you prefer a clearer solution?
> Thanks in advance, Marco
> --
> Marco

Interpreting your question as a general question of stylistics, my
experience is that a 3 line script often becomes a 10 line or a 50
line script at which point the direct printing will have to be
modified to create an internal data structure.

So on the whole I find it expedient to start with that assumption and
write it as:

def linesums(file):
  return [sum(int(i) for i in l.split(';')) for l in open(file, 'r')]

Whether this one-liner is readable or not and how to make it more so
etc is probably bikeshedding.

More important questions are for example:
- Should you protect the open with a try
- When to list and when to generate(or)

All these are nice features of python but can lead to over-engineered
code



More information about the Python-list mailing list