Arguments in Functions and Methods

Learn about how function arguments work in Python.

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 relate to the definition of arguments in functions.

Let’s first explore the mechanics of arguments in Python functions and then review the general principles of software engineering that relate to good practices regarding this subject to finally relate both concepts.

How function arguments work in Python

First, let's review the particularities of how arguments are passed to functions in Python.

By understanding the possibilities that Python offers for handling parameters, we will be able to assimilate general rules more easily, and the idea is that after having done so, we can easily draw conclusions on what good patterns or idioms are when handling arguments. Then, we can identify in which scenarios the Pythonic approach is the correct one for, and in which cases we might be abusing the features of the language.

How arguments are copies to functions

The first rule in Python is that all arguments are passed by a value. Always. This means that when passing values to functions, they are assigned to the variables on the signature definition of the function to be later used on it.

We'll notice that a function may or may not mutate the parameters it receives, depending on their type. If we are passing mutable objects, and the body of the function modifies this, then of course, we have the side effect that they will have been changed by the time the function returns.

In the following example, we can see the difference:

Get hands-on with 1200+ tech skills courses.