Re: argument matching question

2005-08-26 Thread Scott David Daniels
Leif K-Brooks wrote:
 Learning Python wrote:
 
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
[EMAIL PROTECTED]
-- 
http://mail.python.org/mailman/listinfo/python-list


argument matching question

2005-08-25 Thread 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

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: argument matching question

2005-08-25 Thread Leif K-Brooks
Learning Python wrote:
 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
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: argument matching question

2005-08-25 Thread Learning Python
thanks, got it.
I want to test the **name option for argument matching.

-- 
http://mail.python.org/mailman/listinfo/python-list