In Python, functions can be defined to receive arguments in several different ways, and these arguments can also be provided by callers in multiple ways.
There is also an industry-wide set of practices for defining interfaces in software engineering that closely relates to the definition of arguments in functions.
In this section, we will first explore the mechanics of arguments in Python functions and afterwards review the general principles of software engineering that relate to good practices on this subject to finally relate both concepts.