Lists and dictionaries may be used to define or call functions with a variable number of arguments. Let's define a list and a dictionary as follows:
data = [[1,2],[3,4]] style = dict({'linewidth':3,'marker':'o','color':'green'})
Then we can call the plot
function using starred (*
) arguments:
plot(*data,**style)
A variable name prefixed by *
, such as *data
in the preceding example, means that a list that gets unpacked in the function call is provided. In this way, a list generates positional arguments. Similarly, a variable name prefixed by **
, such as **style
in the example, unpacks a dictionary to keyword arguments. Refer to the following figure (Figure 7.1):
Figure 7.1: Starred arguments in function calls
You might also want to use the reverse process, where all given positional arguments are packed into a list and all keyword arguments are packed into a dictionary when passed to a function.
In the function definition, this is indicated by parameters prefixed by *
and **
, respectively. You will often find the *args
and **kwargs
parameters in code documentation, refer Figure 7.2.
Figure 7.2: Starred arguments in function definitions
18.224.56.29