6  Functions

6.1 Define and call a function

def calculate_percentage(part, total):
    """Return part as a percentage of total."""
    if total == 0:
        return None
    return part / total * 100


result = calculate_percentage(25, 80)
print(result)
31.25

6.2 Parameters with default values

def create_label(name, prefix="dataset"):
    return f"{prefix}: {name}"


print(create_label("population"))
print(create_label("roads", prefix="layer"))
dataset: population
layer: roads

6.3 Type hints

def normalize_name(name: str) -> str:
    """Return a simple lowercase identifier."""
    return name.strip().lower().replace(" ", "_")


print(normalize_name(" Total Population "))
total_population

6.4 Things to remember

  • A function should have one clear responsibility.
  • return sends a value back to the caller.
  • A docstring explains the function’s purpose.
  • Type hints improve clarity but do not enforce types automatically.