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 doordict
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. Maaror
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.
Simple is better than complex. — uit The Zen of Python
댓글이 없습니다.