Veel beginners in Python zijn vertrouwd met het schrijven van conditionele uitspraken met if, elif en else, maar naarmate de code langer en genest raakt, neemt de leesbaarheid af. Python, als taal die streeft naar "leesbare code", biedt verschillende manieren om conditionele uitspraken veel eleganter en beknopter uit te drukken.

In dit artikel bespreken we tips en voorbeelden om conditionele splitsingen op een meer Pythonic manier te verwerken, weg van traditionele conditionele uitspraken.


1. Voorwaardelijke expressie (Conditional Expression, aka de ternary operator)

status = "volwassen" als leeftijd >= 18 anders " minderjarig"
  • Mogelijk om if/else in één regel uit te drukken
  • Vermijd echter geneste structuren (zal de leesbaarheid verminderen)

2. Maak gebruik van Truthy / Falsy waarden

if items:
    print("De lijst bevat items.")

In Python worden de volgende waarden als False beschouwd in een conditionele uitspraak: - Lege containers ([], {}, '') - Het getal 0 (0, 0.0) - None

Alle andere waarden worden als True beschouwd, daarom is de bovenvermelde code geldig.

Beginners schrijven vaak code zoals deze:

if len(items) > 0:
    print("De lijst bevat items.")

Echter, in Python wordt len(items) als False beschouwd als het 0 is, en als True als het 1 of meer is, dus kan deze code eenvoudig worden verkort naar if items:.

Deze aanpak is een manier om de leesbaarheid, beknoptheid en Pythonic code stijl allemaal te combineren. Zorg er wel voor dat je niet te veel weglaat, zodat de bedoeling niet onduidelijk wordt; in dat geval is het goed om opmerkingen toe te voegen.


3. Verminder genesteling met Guard Clause

def proces(user):
    if not user.is_active:
        return "Inactieve gebruiker."
    # verdere logica
  • In plaats van codeblokken binnen if in te voegen, gebruik deze methode om snel te retourneren of te beëindigen
  • Als de voorwaarde niet wordt vervuld, keert het snel terug (early return)

4. Vervang conditionele splitsingen door een dictionary

def get_status(code):
    return {
        200: "OK",
        404: "Niet Gevonden",
        500: "Serverfout"
    }.get(code, "Onbekend")
  • Verbeter de leesbaarheid door if-elif te vervangen door dict mapping
  • Met .get() kan ook een standaardwaarde worden ingesteld

5. Verminder complexe voorwaarden met any() / all()

if any([is_admin, is_staff, is_moderator]):
    grant_access()
  • Wanneer een van de voorwaarden True is → any()
  • Wanneer alle voorwaarden True moeten zijn → all()

6. Behandeling van standaardwaarden met de or operator

De or operator in Python retourneert de linkerwaarde als deze als False wordt geëvalueerd en de rechterwaarde anders. Door deze eigenschap te gebruiken, kun je elegant een standaardwaarde als volgt instellen:

username = input("Voer uw naam in: ") or "Geen naam"

Of als de functie mogelijk een lege retourwaarde heeft, kun je ook een fallback-waarde natuurlijk instellen:

items = get_items() or ["Standaard item"]

Deze methode is erg handig omdat je zonder conditionele uitspraken korte en intuïtieve alternatieve waarden kunt instellen.

🔍 Bij toegang tot een dictionary is .get('key', 'default') veilig omdat het controleert of de sleutel bestaat en een standaardwaarde retourneert. Maar or is geschikter om fallbackverwerking uit te voeren voor gewone variabelen of functie-uitvoerwaarden.


7. Patronen matchen (match-case) - Python 3.10+

def handle_error(code):
    match code:
        case 400:
            return "Slechte aanvraag"
        case 404:
            return "Niet Gevonden"
        case _:
            return "Onbekende fout"
  • Beschikbaar in Python 3.10 en later
  • Vervangt switch-case en ondersteunt destructurering

Conclusie

Door conditionele uitspraken beknopt te structureren, kan de leesbaarheid en onderhoudbaarheid van de code aanzienlijk worden verbeterd. De Pythonic stijl is niet alleen bedoeld om het aantal regels te verminderen, maar ook om de bedoeling duidelijker te maken.

Als je in de toekomst bovenstaande voorbeelden geleidelijk gaat toepassen bij het schrijven van conditionele uitspraken, zul je natuurlijk elegantere code kunnen schrijven.


Tux Zen

Simple is better than complex. — uit The Zen of Python