Traling junk in string.atof (RE: array constructor)

Steve Holden sholden at bellatlantic.net
Mon Feb 28 01:03:29 EST 2000


Kind of "Extraneous crud considered harmful"?

regards
 Steve

Ken Seehof wrote:
> 
> I remember reading about a language that generates absolutely no errors of
> any kind.  Maybe it was called Nobol; I don't remember.  The idea is that
> a syntax error indicates a failure in the language to provide semantics for a
> potentially useful idiom.
> 
> That's not Python.  I vote for leaving things like string.atof() the way they
> are.
> 
> - Ken
> 
> Tim Peters wrote:
> 
> > [Tom Holroyd]
> > > ...
> > > While I'm here, string.atof() and float() both barf on "123.45," while the
> > > C atof() doesn't.  A quick check of the code (stropmodule.c) shows that
> > > there is an explicit check for junk at the end of the string.
> >
> > Right.
> >
> > > Is there some reason for this besides just being annoying?  :-)
> >
> > Yes, but simply because "123.45," does not match the syntax for "a number".
> > The trailing comma may be harmless, or it may indicate your program has
> > gotten lost, or that your data has gotten corrupted, or that your data was
> > ill-formed to begin with.  Python refuses to guess that it makes sense,
> > because it has no way to *know*, and guessing "ya, OK" errs in the wrong
> > direction (screws *you* the most).  Python takes this attitude all over the
> > place, btw -- string.atof is just one instance of it.
> >
> > I'm curious how you ended up with a numeric string with a trailing comma to
> > begin with.  For example, if you're reading lines of comma-separated values,
> > the natural idiom is
> >
> >     numbers = map(float, string.split(line, ","))
> >
> > which gets rid of the commas explicitly.
> >
> > > I vote to remove it.
> >
> > I'll set up a web page to keep a running tally <wink>.
> >
> > better-careful-coding-than-endless-debugging-ly y'rs  - tim

--
"If computing ever stops being fun, I'll stop doing it"



More information about the Python-list mailing list