accessing *args from within a function in Python

18,060

Solution 1

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.

Solution 2

def nodeFunction(self, arg1, arg2, *args)

*arg in argument list means: pass the remaning arguments as a list in variable arg. So check how to handle lists. Note: list index starts from 0.

Share:
18,060
SacredGeometry
Author by

SacredGeometry

Muti-disciplined autodidactic creative generalist.

Updated on June 11, 2022

Comments

  • SacredGeometry
    SacredGeometry 12 months

    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.

  • SacredGeometry
    SacredGeometry almost 12 years
    Bloody hell, I am such an idiot, sorry im still getting the hang of python. Thats exactly what I was looking for thank you. Ill accept the answer when I can.