Skip to content
Happy Programming Guide
Start learning
Programming Basics

Functions Explained for Beginners

A function is a named set of steps you can run whenever you need it. Here is how to write one, what return really does, and when code is worth turning into a function.

A function is a set of steps you give a name, so you can run those steps whenever you want without writing them out again.

Python
def greet(name):
    return "Hello, " + name + "!"

print(greet("Sam"))
print(greet("Ada"))

Written once, used twice. Change the greeting in one place and both calls update.

The three parts of a function#

  • A name — what it does, usually a verb: calculate_total, send_email.
  • Inputs (parameters) — the information it needs, in brackets.
  • An output (return value) — the answer it hands back.
Python
def area(width, height):
    return width * height

print(area(3, 4))    # 12

width and height are parameters — placeholder names. The 3 and 4 you pass in are arguments — the real values.

JavaScript
function area(width, height) {
  return width * height;
}

console.log(area(3, 4));   // 12

Return versus print — the one that confuses everyone#

print shows something to a person. return hands a value back to the code that called the function. They are not interchangeable.

Python
def double_printed(n):
    print(n * 2)

def double_returned(n):
    return n * 2

result = double_printed(5)    # displays 10, result is None
result = double_returned(5)   # displays nothing, result is 10
print(result * 3)             # 30 — only works with the second one

If a function’s answer needs to be used in further calculations, it must return. A function with no return hands back “nothing” (None in Python, undefined in JavaScript), which is why None * 3 errors.

Default values#

Python
def greet(name, greeting="Hello"):
    return greeting + ", " + name + "!"

print(greet("Sam"))              # Hello, Sam!
print(greet("Sam", "Welcome"))   # Welcome, Sam!

Variables inside a function stay inside it#

A variable created inside a function does not exist outside it. This is called scope, and it is a feature rather than an inconvenience — two functions can both use a variable called total without interfering with each other.

Python
def calculate():
    subtotal = 100
    return subtotal

calculate()
print(subtotal)   # NameError: name 'subtotal' is not defined

If you need the value outside, return it and store the result.

When should something become a function?#

  1. You copied and pasted code. The second copy is the moment to make a function.
  2. You want to name a step. If a block needs a comment explaining what it does, that comment is usually the function name.
  3. A block does more than one job. “Fetch the data and format it and save it” is three functions wearing a trench coat.

You do not need to make everything a function. A five-line script is fine as it is.

A worked example#

Python
def apply_discount(price, percent):
    return price - (price * percent / 100)

def format_money(amount):
    return "Rs " + str(round(amount, 2))

original = 2500
final = apply_discount(original, 15)

print("Was:", format_money(original))
print("Now:", format_money(final))

Two small functions, each doing one thing, combined at the end. That is the shape most well-organised programs take.

Questions people ask#

What is the difference between a function and a method?

A method is a function that belongs to an object. len(name) is a function; name.upper() is a method on the string. You call methods with a dot after the thing they work on.

Can a function call another function?

Yes, and it is normal. Small functions calling other small functions is how larger programs stay readable.

How many parameters is too many?

If you are passing five or six, the function is probably doing too much, or those values belong together in one object. Three or four is a reasonable ceiling for everyday code.

Can a function return more than one value?

Python can return several at once (return width, height) and you unpack them into two variables. JavaScript does the same by returning an object or an array.

Where to go next#

Next lessonArrays and lists explained

Keep reading

Keep going — pick your next guide

The fastest way to improve is to read one guide, then build the thing it describes. Start with the basics, or jump straight to a project.

Ask a question or share what worked

Your email address will not be published. Required fields are marked *