[Tutor] More problems with Learning Python example

Alan G alan.gauld at freenet.co.uk
Fri Aug 12 10:48:50 CEST 2005

Something odd here...

> def do_timing(num_times, *funcs):
>     totals = {}
>     for func in funcs:

Here you assign func to each function in turn.

>         totals[func] = 0.0

And here you create a key with it

>         starttime = time.clock()        # record starting time
>         for x in range(num_times):
>             for func in funcs:

And the same here, but the result will be that when you exit this
loop func will always be the last function.

>         totals[func] = totals[func] + elapsed

But you won't have created a key for the last function so
this falls over.

> Traceback (most recent call last):
>   File "timings.py", line 16, in ?
>     do_timing(100, makezeros.lots_of_appends, 
> makezeros.one_multiply)
>   File "timings.py", line 12, in do_timing
>     totals[func] = totals[func] + elapsed
> KeyError: <function one_multiply at 0x403eaf0c>

I'm not quite sure what the second funcs loop is doing, but thats
the reason for the key error.


Alan G. 

More information about the Tutor mailing list