the full guide

Functions: reusable code

Write your own commands: arguments, return values, scope, lambda and recursion.

15 min Beginner

What you need: The earlier pages of this course. Nothing to install.

Defining a function

functions.py
def percentage(marks, total):
    result = marks / total * 100
    return result

print(percentage(45, 50))
print(percentage(180, 200))

Output

90.0
90.0

Arguments

arguments.py
def greet(name, greeting="Namaste"):      # A default value
    print(greeting, name)

greet("Riya")
greet("Aman", "Hello")
greet(greeting="Hi", name="Sara")         # By name

def add_all(*numbers):                    # Any number of values
    return sum(numbers)
print(add_all(1, 2, 3, 4))

def show(**details):                      # Any named values
    print(details)
show(name="Riya", age=14)

Output

Namaste Riya
Hello Aman
Hi Sara
10
{'name': 'Riya', 'age': 14}

Scope: where a variable lives

scope.py
count = 10            # Global: visible everywhere

def demo():
    count = 99        # A separate variable, inside the function only
    print("inside:", count)

demo()
print("outside:", count)

Output

inside: 99
outside: 10

Lambda and recursion

lambda_recursion.py
# Lambda: a tiny function with no name
square = lambda x: x * x
print(square(5))

students = [("Riya", 78), ("Aman", 92), ("Sara", 65)]
print(sorted(students, key=lambda s: s[1]))    # Sort by marks

# Recursion: a function that calls itself
def factorial(n):
    if n <= 1:
        return 1
    return n * factorial(n - 1)
print(factorial(5))

Output

25
[('Sara', 65), ('Riya', 78), ('Aman', 92)]
120

Code challenge

Write is_even(n) that returns True or False.

def is_even(n): return n % 2 == 0

Write average(numbers) for a list.

def average(numbers): return sum(numbers) / len(numbers)

Finished reading?