accessing *args from within a function in Python

SacredGeometry picture SacredGeometry · Jul 30, 2011 · Viewed 13.5k times · Source

Hi everyone this is probably something extremely simple that i'm overlooking but can someone point me in the right direction for how to handle this problem.

def nodeFunction(self,*args):
    return self[1] + self[2]    

Basically what I am trying to do is grab the data passed in through the arguments. I am just stuck on the syntax for referencing the arguments inside the function when using *args.

Answer

senderle picture senderle · Jul 30, 2011

args is simply a tuple:

def nodeMethod(self, *args):
    return args[0], args[1]

Is that what you mean?

Note that there's nothing special about "args". You could use any variable name. It's the * operator that counts.

>>> class Node(object):
...     def nodeMethod(self, *cornucopia):
...         return cornucopia[0], cornucopia[1]
... 
>>> n = Node()
>>> n.nodeMethod(1, 2, 3)
(1, 2)

Still, "args" is the most idiomatic variable name; I wouldn't use anything else without a good reason that would be obvious to others.