if the last argument of function definition begins with **all the additional keyword arguments (those that don' match any of the other parameter namesare placed in dictionary and passed to the function this can be useful way to write functions that accept large number of potentially open-ended configuration options that would be too unwieldy to list as parameters here' an exampledef make_table(data**parms)get configuration parameters from parms ( dictfgcolor parms pop("fgcolor","black"bgcolor parms pop("bgcolor","white"width parms pop("width",noneno more options if parmsraise typeerror("unsupported configuration options %slist(parms)make_table(itemsfgcolor="black"bgcolor="white"border= borderstyle="grooved"cellpadding= width= you can combine extra keyword arguments with variable-length argument listsas long as the *parameter appears lastaccept variable number of positional or keyword arguments def spam(*args**kwargs)args is tuple of positional args kwargs is dictionary of keyword args keyword arguments can also be passed to another function using the **kwargs syntaxdef callfunc(*args**kwargs)func(*args,**kwargsthis use of *args and **kwargs is commonly used to write wrappers and proxies for other functions for examplethe callfunc(accepts any combination of arguments and simply passes them through to func(parameter passing and return values when function is invokedthe function parameters are simply names that refer to the passed input objects the underlying semantics of parameter passing doesn' neatly fit into any single stylesuch as "pass by valueor "pass by reference,that you might know about from other programming languages for exampleif you pass an immutable valuethe argument effectively looks like it was passed by value howeverif mutable object (such as list or dictionaryis passed to function where it' then modifiedthose changes will be reflected in the original object here' an examplea [ def square(items)for , in enumerate(items)items[ix modify items in-place square(achanges to [ functions that mutate their input values or change the state of other parts of the program behind the scenes like this are said to have side effects as general rulethis is lib fl ff