Python - *args and **kwargs
This is really useful:
Passing a list as an argument and prefixing it with a single asterisk (*) will cause each item of the list, in order, to be used as a separate positional argument. Passing a dictionary and prefixing it with two asterisks (**) will cause the keys of the dictionary to be used as names for separate keyword arguments and the dictionary’s values to become the values of these arguments.
When a Python function needs to accept arbitrary sets of optional arguments, or to accept many different arguments based on different situations, it’s common to define it like this:
The function will then have access to a list named args containing all the positional arguments passed to it and a dictionary named kwargs containing all the keyword arguments passed to it. The function can then look at those variables to work out what it needs to do.
Reference:
Practical Django Projects, 2nd edition, James Bennet, Apress.
Passing a list as an argument and prefixing it with a single asterisk (*) will cause each item of the list, in order, to be used as a separate positional argument. Passing a dictionary and prefixing it with two asterisks (**) will cause the keys of the dictionary to be used as names for separate keyword arguments and the dictionary’s values to become the values of these arguments.
When a Python function needs to accept arbitrary sets of optional arguments, or to accept many different arguments based on different situations, it’s common to define it like this:
def my_func(*args, **kwargs):
The function will then have access to a list named args containing all the positional arguments passed to it and a dictionary named kwargs containing all the keyword arguments passed to it. The function can then look at those variables to work out what it needs to do.
Reference:
Practical Django Projects, 2nd edition, James Bennet, Apress.
Comments
Post a Comment