# Give your function something to work with
# parameters — pass values in, function uses them

# ─────────────────────────────────────────────
# Your first parameter
# ─────────────────────────────────────────────

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

greet("Bull")     # Hello, Bull.
greet("Horn")     # Hello, Horn.
greet("Red")      # Hello, Red.

# one function — three calls — three different names

# ─────────────────────────────────────────────
# Multiple parameters
# ─────────────────────────────────────────────

def greet(name, role):
    print(f"Hello, {name}. You are a {role}.")

greet("Bull", "developer")
greet("Horn", "student")

# Hello, Bull. You are a developer.
# Hello, Horn. You are a student.

# separate with commas — pass in order

# ─────────────────────────────────────────────
# Banner — upgraded
# ─────────────────────────────────────────────

def banner(title):
    border = "=" * len(title)
    print(border)
    print(title)
    print(border)

banner("RedHorn")
banner("Control Flow")
banner("Functions")

# =======
# RedHorn
# =======
# no more input() — pass the title directly

# ─────────────────────────────────────────────
# Parameter vs Argument
# ─────────────────────────────────────────────

def greet(name):     # name is the parameter — defined here
    print(name)

greet("Bull")        # "Bull" is the argument — passed here

# parameter = variable in definition
# argument  = value in call

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

# def function_name(parameter):   — parameter in definition
#     # use parameter here
#
# function_name(argument)         — argument in call
#
# order matters — arguments assigned by position
# too many or too few arguments — TypeError
# parameters are local — only exist inside the function
