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 almost 2 years

    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 13 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.