A question about readability

rusi rustompmody at gmail.com
Mon Dec 10 05:26:28 EST 2012


On Dec 10, 3:03 pm, Jean-Michel Pichavant <jeanmic... at sequans.com>
wrote:
> ----- Original Message -----
> > 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')]
>
> Why change the OP's namings ? 'data' and 'line' were more suitable than 'i' and 'l'. Of course we're nitpicking, no one will get hurt.
>
> JM

Yes, l is an undesirable name because it can look like 1



More information about the Python-list mailing list