Functions are a powerful tool with extensive capabilities. So far, we have looked at the simplest types of functions: named functions. In addition, Python has anonymous functions, which greatly expand the language's expression capabilities. When describing and calling functions, we have mainly used positional arguments. Now, we pass them in a strictly defined order.
Python allows functions to have named arguments besides positional ones. Functions in Python can take a variable number of them inside a collection object. Python functions are first-class objects, so we can pass, receive by reference and construct them on the fly.