Basic return

Functions use return to send a value back to the caller:

def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 8

Returning None

Functions without return return None:

def print_hello():
    print("Hello")
    # No return statement

result = print_hello()
print(result)  # None

Multiple return values

Return multiple values as a tuple:

def get_name_age():
    return "Alice", 30  # Returns tuple

name, age = get_name_age()  # Unpack tuple
print(name, age)  # "Alice 30"

# Or keep as tuple:
info = get_name_age()
print(info)  # ('Alice', 30)

Early return

You can return early to exit the function:

def check_positive(n):
    if n <= 0:
        return False  # Exit early
    return True  # Only reached if n > 0

print(check_positive(5))  # True
print(check_positive(-3))  # False

Return vs print

return sends a value back. print just displays it:

def add_print(a, b):
    print(a + b)  # Displays but doesn't return

def add_return(a, b):
    return a + b  # Returns value

result1 = add_print(3, 5)  # Prints 8, but result1 is None
result2 = add_return(3, 5)  # result2 is 8