function that accepts any amount of arguments?
member thudfoo
thudfoo at opensuse.us
Thu Apr 24 15:13:48 EDT 2008
On 4/24/08, Jonathan Gardner <jgardner at jonathangardner.net> wrote:
> On Apr 24, 5:28 am, malkarouri <malkaro... at gmail.com> wrote:
> >
> > What's wrong with raising ZeroDivisionError (not stopping the
> > exception in the first place)?
> >
>
>
> Because when I use your module, call avg (or mean) without args, I
> should see an error that says, "Hey, you have to pass at least one
> value in!"
>
> ZeroDivisonError doesn't mean that. It means I tried to divide by
> zero. Naively, I don't see where I was dividing by zero (because I
> don't remember how to calculate the mean---that's what your code was
> for.)
>
> ValueError does mean that I didn't pass the right kind of arguments
> in. ValueError("No items specified") would be even clearer. (Or maybe
> TypeError?)
>
> In general, any exception thrown should be meaningful to the code you
> are throwing it to. That means they aren't familiar with how your code
> works.
>
[source]|557> def average(n, *ints):
|...> return (sum(ints)+n) / (len(ints) + 1)
|...>
[source]|558> average (1,2,3)
<558> 2
[source]|559> average(3)
<559> 3
[source]|560> average(1,2)
<560> 1
[source]|561> average(0)
<561> 0
[source]|562> average()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/usr/share/doc/packages/python-dateutil/source/<ipython console> in <module>()
TypeError: average() takes at least 1 argument (0 given)
More information about the Python-list
mailing list