# Your function finally talks back
# return — send a value back to the caller

# ─────────────────────────────────────────────
# Your first return
# ─────────────────────────────────────────────

def square(number):
    return number * number

result = square(5)
print(result)    # 25

# ─────────────────────────────────────────────
# Using the returned value
# ─────────────────────────────────────────────

print(square(3))           # 9 — use directly
x = square(4)              # store it
print(x + square(2))       # 20 — combine

# a returned value behaves like any other value

# ─────────────────────────────────────────────
# return stops the function
# ─────────────────────────────────────────────

def check(number):
    if number > 0:
        return "positive"
    return "zero or negative"

print(check(5))     # positive
print(check(-3))    # zero or negative

# first return reached — function stops
# second return only runs if first didn't

# ─────────────────────────────────────────────
# Without return — None
# ─────────────────────────────────────────────

def greet(name):
    print(f"Hello, {name}.")

result = greet("Bull")
print(result)    # None

# a function without return returns None
# not an error — just empty

# ─────────────────────────────────────────────
# Quick reference
# ─────────────────────────────────────────────

# return value          — sends value back, stops function
# result = function()   — store the returned value
# print(function())     — use directly
# no return             — function returns None
# multiple returns      — first one reached wins
