# π§Introduction to Functions

The power of modularity.

### Function, Explained

You may be familiar with the concept of functions from mathematics. If you'll forgive me invoking some traumatic high school memories, you may remember functions looking like this:

$f(x) = 2^x - x^4$

Functions in computer science follow the same principle: they expect some inputs, and return some output. This same function in Python looks like this:

def f(x):
return 2**x - x**4

Functions in programs defer from mathematical functions in one critical way β they can produce side-effects. Let's make a small edit to the previous function:

def f(x):
print("Hi!")
return 2**x - x**4

This new f is essentially the same as the mathematical f β it takes an input x and computes and returns a value based on that input. However, this function also prints "Hi!" every time a value is computed β the output isn't changed, but the function's behavior is. This is a side-effect.

### Anatomy of a Function

At this point, you may be starting to develop an idea about what a function typically looks like. Let's give certain parts of functions certain keywords, to make it easier for us to talk about them later.

Given a function

def f(x, y=1):
a = x * y
return a

The name of this function is f, and it is said to accept 2 arguments x and y. When no value is passed in for y, it is automatically set to 1 β this is known as the argument's default value. The entire first line together is known as the "function signature". Everything that is tabbed inside of a function is known as the "body" of the function.

This function would be called like so:

f(2, 3)

This would return to us a value 2 * 3 = 6. Similarly, a function call like the following:

f(2)

would return the value 2 * 1 (default of y) = 2.

### Why Are Functions Important?

Now that we've spent a bit of time developing an understanding of programming functions, one has to wonder: what is the point of functions? Why have functions in a programming language anyway?

The idea behind functions is to encourage modularity. A function can be thought of as a black box, that accepts some inputs and splits out some output based on some rules. Once written, you and I shouldn't have to worry about how that function works.

This is the contract between a function and its caller β if valid inputs are provided, expected outputs are returned. This is also what makes functions one of the most powerful building blocks in all of computer science.

Last updated