argument matching question

L

Learning Python

I know this is dummy, just never saw an example of this.


I want to use the special argument matching.

A code like this:

def adder(**varargs):
sum=varargs[varargs.keys()[0]]
for next in varargs.keys()[1:]:
sum=sum+varargs[next]
return sum

print adder( "first","second",'third')


------------------------
It pop up error like this:

Traceback (most recent call last):
File "learn.py", line 7, in ?
print adder( "first","second",'third')
TypeError: adder() takes exactly 0 arguments (3 given)


How to pass arguments to a functions that use dictionary collection?


Thanks
 
L

Leif K-Brooks

Learning said:
A code like this:

def adder(**varargs):
sum=varargs[varargs.keys()[0]]
for next in varargs.keys()[1:]:
sum=sum+varargs[next]
return sum

print adder( "first","second",'third')

How to pass arguments to a functions that use dictionary collection?

Like adder(foo="bar", bar="baz"), but I think you really want a function
like this:

def adder(*args):
sum = args[0]
for value in args[1:]:
sum += value
return sum
 
S

Scott David Daniels

Leif said:
Learning said:
A code like this:

def adder(**varargs):
sum=varargs[varargs.keys()[0]]
for next in varargs.keys()[1:]:
sum=sum+varargs[next]
return sum

For that function, call:
print adder(first=1, second=2, third=3)

A better function definition for python 2.4 would be:
def adder(**varargs):
return sum(varargs.values())
And a better function definition without using sum would be:
def adder(**varargs):
values = varargs.values()
if values:
total = values[0]
for element in values[1:]:
total += element
return total
else:
return 0

--Scott David Daniels
(e-mail address removed)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,265
Messages
2,571,317
Members
47,996
Latest member
LaurenFola

Latest Threads

Top