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 to provide the function with its arguments. 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; see Figure 7.1:
![](https://static.packt-cdn.com/products/9781838822323/graphics/assets/af27c774-d30e-4912-82c4-83562b036b9d.png)
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...