A function can return data to the code that called it. This is useful when you don’t want a function to print to the console, but rather process something internally. For instance, you can have a variable to store the value returned by a function. Python can return any data type, as well as objects or even other functions!
def average(numbers): return sum(numbers) / len(numbers)
The code above returns the average of a list of numbers. It uses the built-in sum() and len() methods to sum all of the numbers in numbers and divide that by the length of the numbers list. Notice that if I call the function by itself, there is no output to the console:
numbers = [1, 2, 3] average(numbers)
This is because returning a value simply gives data back to wherever the function was called. If you want to display the data, you’ll need to use a print statement.
numbers = [1, 2, 3] print(average(numbers))
Now you might be thinking, why would I ever want to use a return statement if it doesn’t display anything? Well, return statements are useful for handling data from a function that may not be displayed, or data that might need to be processed before being displayed. For example:
numbers_1 = [1, 2, 3] numbers_2 = [4, 5, 6] numbers_3 = [7, 8, 9] sum_of_averages = average(numbers_1) + average(numbers_2) + average(numbers_3) print(sum_of_averages)
Notice that we called the average() function multiple times.
average(numbers_1) # would return 2 average(numbers_2) # would return 5 average(numbers_3) # would return 8
Thus, when we added the result of those together (2 + 5 + 8), we got 15. Thanks to the return statement, we were able to process that data, adding all of the averages together and then printing that result.
View code on GitHub.