Way to pass multiple parameters to a function in python

Way to pass multiple parameters to a function in python

test function:

You can use multiple arguments represented by *args and multiple keywords represented by **kwargs and passing to a function:

def test(*args, **kwargs):
    print(arguments are:)
    for i in args:
        print(i)

    print(nkeywords are:)
    for j in kwargs:
        print(j)

Example:

Then use any type of data as arguments and as many parameters as keywords for the function. The function will automatically detect them and separate them to arguments and keywords:

a1 = Bob      #string
a2 = [1,2,3]    #list
a3 = {a: 222, #dictionary
      b: 333,
      c: 444}

test(a1, a2, a3, param1=True, param2=12, param3=None)

Output:

arguments are:
Bob
[1, 2, 3]
{a: 222, c: 444, b: 333}

keywords are:
param3
param2
param1

You can change it to:

def WorkDetails(link, details):

Then invoke it as:

details = [ AllcurrValFound_bse, AllyearlyHLFound_bse, 
            AlldaysHLFound_bse, AllvolumeFound_bse, 
            AllprevCloseFound_bse, AllchangePercentFound_bse, 
            AllmarketCapFound_bse ]
workDetails(link, details)

And you would get the different values out of details by:

AllcurrValFound_bse = details[0]
AllyearlyHLFound_bse = details[1]
...

It would be more robust to turn details into a dictionary, with the variable names as keys, so take your pick between a few more lines of code vs. defensive programming =p

Way to pass multiple parameters to a function in python

You could use *args if you dont need to use names for your lists:

def WorkDetails(link, *args):
    if args[0] == ... # Same as if AllcurrValFound_bse == ...
        ...

 # Call the function:
 WorkDetails(link, AllcurrValFound_bse, AllyearlyHLFound_bse, AlldaysHLFound_bse, AllvolumeFound_bse, AllprevCloseFound_bse, AllchangePercentFound_bse, AllmarketCapFound_bs)

Or you could use a dictionary

def WorkDetails(link, dict_of_lists):
    if dict_of_lists[AllcurrValFound_bse] == ...
        ...

# Call the function
myLists = {
    AllcurrValFound_bse: AllcurrValFound_bse,
    AllyearlyHLFound_bse: AllyearlyHLFound_bse,
    ...,
    ...
}
WorkDetails(link, myLists)

Leave a Reply

Your email address will not be published.