Newbie question...

David Porter jcm at
Wed Sep 27 16:10:45 CEST 2000

* jhorn94 at <jhorn94 at>:
> I'm going thru the Learning Python book and am stumpped.  The exercise

I'm (slowly) reading it too!

> calls for a function that accepts and arbitrary number of keyword
> arguments, then returns the sum of the values.  I can step thru the
> arguments with a for statement, but I can't figure out how to accumlate
> a sum of the values.  Any help is appreciated.
> def adder(**args):
>     for x in args.keys():
>         y=y+x
>     return y
> print adder(good=1, bad=2, ugly=3)
> print adder(good="a", bad="b", ugly="c")


> UnboundLocalError: y

because there is no y to add x to.

The following should do what you want:

def adder(y, **args):
    for x in args.values():
    return y
print adder(good=1, bad=2, ugly=3, y=0)
print adder(good="a", bad="b", ugly="c", y='')

I changed args.keys() to args.values() so that the values of the keywords
are added and not the keywords themselves. I also added y as a keyword, though
there might be a better way to do this. I did this because adding numbers
requires y to be different than when concatenating characters.


More information about the Python-list mailing list