Ga naar hoofdinhoud

Gids voor de tertiaire operatoren in Python: je code efficiënter maken

Leer hoe je je Python-vaardigheden verbetert met tertiaire operatoren om efficiëntere en beter leesbare code te schrijven. Plus: ontdek tips om je conditionele statements te stroomlijnen.
· 11 min lezen

Verken met AI

Python-vaardigheden zijn onmisbaar als je met data werkt, of je nu datasets analyseert of complexe modellen bouwt. Goede Python-code is makkelijk te begrijpen en mee te werken, maar het kan rommelig worden zodra je voorwaarden toevoegt. Daar komen tertiaire operatoren goed van pas.

Tertiaire operatoren zijn een soort snelkoppeling die je code netjes en duidelijk houdt.

In dit artikel bespreken we de details van tertiaire operatoren en laten we met voorbeelden zien hoe je ze in je code gebruikt. Daarnaast gaan we in op de voor- en nadelen van tertiaire operatoren.

Wat zijn tertiaire operatoren in Python?

Het woord “ternary” betekent “uit drie delen samengesteld”. De tertiaire operator heet zo omdat hij drie operanden bevat:

  • Een voorwaarde
  • Een expressie die wordt uitgevoerd als de voorwaarde True is
  • Een andere expressie die wordt uitgevoerd als de voorwaarde False is.

In programmeerliteratuur kun je tertiaire operatoren onder verschillende namen tegenkomen: Conditional Operator, Ternary If en Inline If (IIF).

Tertiaire operatoren zijn niet uniek voor Python. Talen zoals Java, JavaScript en C hebben ook hun eigen versie. Hoewel de syntaxis wat kan verschillen, delen ze allemaal dezelfde basisfunctionaliteit. Laten we dit uitleggen met een eenvoudig voorbeeld.

Stel dat je een beslissing moet nemen, zoals of je naar het strand gaat of thuis blijft. Je baseert die beslissing misschien op het weer. Als het zonnig is, ga je naar het strand, maar als het regent, blijf je thuis. In een if-else-voorwaarde ziet dat er zo uit:

if weather=="sunny":	print("Go to the beach")else:	print("Stay home")

Vertalen we dit beslisproces naar een tertiaire operatie, dan krijg je:

Als het zonnig is, ga je naar het strand (x), anders (else) blijf je thuis (y).

In Ternary Python ziet dat er zo uit:

Beide gevallen zijn correct. Welke denk jij dat het netjesst is in Python-code?

De basis­syn­taxis van tertiaire operatoren in Python

Python Ternary Operators

Laten we nu wat dieper duiken en de tertiaire operatoren in detail verkennen. De algemene vorm van tertiaire operatoren in Python ziet er zo uit:

Voorwaarde

De voorwaarde in een tertiaire operator in Python kan elke expressie zijn die evalueert naar een booleaanse waarde (True of False). Deze expressie kan vergelijkingen of relationele operatoren (<,>,==,!=), logische operatoren (logische AND, logische OR en logische NOT-bewerkingen), functieaanroepen of elke andere bewerking omvatten die resulteert in een booleaanse waarde.

De voorwaarde kan bijvoorbeeld zijn:

  • Een eenvoudige vergelijking: x < 100
  • Een combinatie van vergelijkingen: x < 10 en y > 25
  • Een functieaanroep: is_numer(value)
  • Een logische expressie: x > 0 of y < 0

Het belangrijkste is dat de voorwaarde evalueert naar True of False, afhankelijk van de logica die je wilt implementeren. Het resultaat van de tertiaire operator is vervolgens gebaseerd op de uitkomst van deze evaluatie.

result_if_true

Dit deel van de tertiaire operator wordt vaak “result if true” of “value if true” genoemd. Het staat voor de actie of waarde die moet worden genomen of toegewezen wanneer de opgegeven voorwaarde True is.

  • Een variabele: x
  • Een constante waarde: 10
  • Een functieaanroep: calculate_value()
  • Een rekenkundige expressie: x-1, x * 2
  • Elke andere geldige Python-expressie die een waarde oplevert

Met het result_if_true-deel geef je de uitkomst of waarde op die je wilt wanneer aan de voorwaarde wordt voldaan (True).

result_if_False

Net als het “result if true”-deel kan het “result if false”-deel elke geldige Python-expressie of -waarde zijn, zoals:

  • Een variabele: y
  • Een constante waarde: 0
  • Een functieaanroep: get_value()
  • Een rekenkundige expressie: y + 2
  • Elke andere geldige Python-expressie die een waarde oplevert

Deze flexibiliteit laat je verschillende uitkomsten of waarden specificeren op basis van het al dan niet voldoen aan de voorwaarde.

In de volgende sectie bespreek ik voorbeelden die de meeste combinaties van conditions, result_if_True en result_if_False behandelen.

Hoe gebruik je tertiaire operatoren in Python

Tertiaire operatoren bieden een beknopte manier om conditionele logica uit te drukken, niet alleen in eenvoudige if-else-uitspraken maar ook in andere Python-constructies zoals tuples en dictionaries.

Tertiaire operatoren in if-else-statements

Zorg er bij tertiaire operatoren voor dat de voorwaarde naar True of False evalueert. De onderstaande voorbeelden laten zien hoe tertiaire operatoren verschillende datatypes tegelijk kunnen verwerken binnen hun drie delen. Deze flexibiliteit maakt ze handig om uiteenlopende soorten informatie in één expressie te combineren.

Voorwaarde: vergelijking, Resultaat als True: variabele, Resultaat als False: variabele

#the result will be x if x is less than y otherwise it will be yx = 3y = 5result = x if x < y else y

Voorwaarde: lidmaatschap, Resultaat als True: constante, Resultaat als False: constante

# the result will be “Element is present” if the element exists in my_list otherwise it will be "Element is not present"my_list = [1, 2, 3, 4, 5]element = 6result = "Element is present" if element in my_list else "Element is not present"

Voorwaarde: logisch, Resultaat als True: constante, Resultaat als False: constante

# the result will be “Even” if the mod of X is 0 otherwise the result will be “Odd”x = 5result = "Even" if x % 2 == 0 else "Odd"

Voorwaarde: logisch, Resultaat als True: rekenkundig, Resultaat als False: rekenkundig

# if x is less than y the results will be the sum of x and y otherwise the result will be the subtraction. x = 5y = 7result = x + y if x < y else x - y

Voorwaarde: logisch, Resultaat als True: variabele, Resultaat als False: functie

# in case x is not None value, the result is x otherwise it is the output of the get_defult values function, which is “Default”def get_default_value():    return "Default"x = Noneresult = x if x is not None else get_default_value()

Voorwaarde: functie, Resultaat als True: rekenkundige expressie, Resultaat als False: functie

# If the customer_type is not "Regular”, the get_discount function will be called with customer_type as an argument; otherwise, the discount will be set to 0.def get_discount(customer):    return 10 if customer == "VIP" else 5customer_type = "Regular"discount = get_discount(customer_type) if customer_type != "Regular" else 0

Voorwaarde: logisch, Resultaat als True: functie, Resultaat als False: functie

# in case a  is less than b print the value “a is greater” otherwise print “b is greater”a=100b=200print(a,"is greater") if (a>b) else print(b,"is greater")

Geneste tertiaire operatoren

De geneste tertiaire operator in Python laat je meerdere conditionele expressies combineren binnen één tertiaire operator. Dit is vooral handig wanneer je meerdere voorwaarden moet evalueren en verschillende resultaten wilt teruggeven afhankelijk van elke voorwaarde.

Laten we een voorbeeld bekijken waarin we de categorie van een getal willen bepalen op basis van de waarde:

num = 15size= "Small" if num < 4 else ("Medium" if num < 10 else "Large")

In dit voorbeeld:

  • De buitenste tertiaire operator controleert of het getal kleiner is dan 4. Zo ja, dan wordt de categorie "Small" toegekend.
  • Als het getal niet kleiner is dan 10, controleert de binnenste tertiaire operator of het getal kleiner is dan 10. Zo ja, dan wordt de categorie "Medium" toegekend
  • Als aan geen van beide voorwaarden wordt voldaan, wordt de categorie "Large" toegekend.

Tertiaire operatoren met tuples

Tertiaire operatoren kun je binnen tuples gebruiken om waarden te selecteren op basis van een voorwaarde. Bijvoorbeeld:

value = (x if condition else y)

Er bestaat echter een meer verfijnde manier om tertiaire operatoren op tuples toe te passen. Deze methode benut de indexeringsmogelijkheden van tuples om conditionele operaties uit te voeren. In combinatie met tuples, onveranderlijke reeksen elementen, maken tertiaire operatoren compacte en leesbare conditionele expressies mogelijk.

Binnen de context van tuples selecteert de tertiaire operator één van twee waarden op basis van een voorwaarde en retourneert die. Dit gebeurt door de tuple te indexeren met de uitkomst van de voorwaarde als index. Als de voorwaarde True is, en in Python geldt True = 1, dan wordt het element op index 1 (overeenkomend met result_if_true) geretourneerd; anders het element op index 0 (overeenkomend met result_if_false).

Deze aanpak kan helpen bij eenvoudige conditionele toewijzingen of evaluaties binnen expressies. Zorg er echter voor dat de code leesbaar en begrijpelijk blijft.

Voorbeeld:

a, b = 1, 5print((a, b)[a < b])
  • (a, b): Dit maakt een tuple (a, b) met twee elementen, waarbij a het eerste element is en b het tweede. In Python begint indexeren bij 0. Dus a heeft index 0 en b heeft index 1.
  • [a < b]: Dit is een indexeringsoperatie. Als a kleiner is dan b, evalueert dit tot True, wat in Python gelijkstaat aan 1. Als a niet kleiner is dan b, evalueert het tot False, wat gelijkstaat aan 0.
  • Deze indexering selecteert dus effectief het eerste of tweede element van de tuple op basis van de uitkomst van de vergelijking a < b.
  • Omdat a 1 is en b 5, evalueert a < b tot True, wat betekent 1. Daarom wordt de expressie b geselecteerd en wordt 5 geprint.

Tertiaire operatoren met dictionaries

Het concept van indexering, zoals bij tuples, kun je ook uitbreiden naar dictionaries. Anders dan tuples hebben dictionaries echter geen traditionele index in Python. In plaats daarvan gebruiken dictionaries hun keys om waarden te benaderen en op te halen.

Dictionary-keys vervullen een vergelijkbare rol als indices: ze maken het efficiënt ophalen van waarden bij specifieke keys mogelijk. Dictionary-keys lijken op tuples in die zin dat beide onveranderlijk zijn; je kunt ze intern niet wijzigen zonder de identiteit van de dictionary te veranderen.

a, b = 1, 5result= {True: a, False: b} [a < b]
  • Deze code is een dictionary-expressie gecombineerd met key-value-opvraging.
  • {True: a, False: b}: Dit maakt een dictionary met twee key-value-paren.
  • Als de voorwaarde [a < b] True is, wordt de key True gekoppeld aan de waarde a; als de voorwaarde False is, wordt de key False gekoppeld aan de waarde b.

Voordelen en nadelen van tertiaire operatoren in Python

Tertiaire operatoren hebben, net als elk hulpmiddel, hun plus- en minpunten. Het is belangrijk beide kanten te kennen om de juiste balans te vinden en ze effectief te gebruiken.

Laten we eerst de voordelen van Python’s tertiaire operatoren bekijken:

  • De code wordt kort en duidelijk.
  • De code is makkelijker te lezen en te begrijpen omdat hij compacter is.
  • Ze zijn handig wanneer je waarden moet toewijzen op basis van bepaalde voorwaarden.
  • Je code ziet er niet alleen schoner uit, hij kan ook sneller draaien omdat er minder opties hoeven te worden gecontroleerd.

De nadelen van het gebruik van Python’s tertiaire operatoren zijn als volgt:

  • Tertiaire operatoren zijn mogelijk niet ideaal in scenario’s met meerdere voorwaarden.
  • Complexe en geneste tertiaire operatoren kunnen tot verwarring en fouten leiden.
  • Overmatig gebruik van tertiaire operatoren kan resulteren in te complexe code die lastig te begrijpen en te onderhouden is.
  • De logische stroom van code met complexe tertiaire operatoren kan onduidelijk zijn, waardoor debuggen en het opsporen en oplossen van fouten erg lastig wordt.

Best practices voor tertiaire operatoren

Zoals met elk hulpmiddel kom je ook hier uitdagingen tegen. Houd deze best practices in gedachten wanneer je ze in je code gebruikt:

  • Gebruik ze verstandig: Complexe voorwaarden in tertiaire operatoren maken code lastig leesbaar. Splits ze zo nodig op in if-else-statements.
  • Ga niet te diep: Te veel geneste tertiaire operatoren zorgen voor een wirwar. Houd het simpel en overzichtelijk.
  • Test grondig: Zorg dat je code met tertiaire operatoren in verschillende scenario’s werkt zoals verwacht.
  • Leg je logica uit: Voeg comments toe om uit te leggen wat de tertiaire operator doet voor betere onderhoudbaarheid.
  • Wees consistent: Gebruik tertiaire operatoren overal op dezelfde manier voor een nette, leesbare stijl.
  • Ga goed om met fouten: Bouw manieren in om onverwachte situaties af te handelen wanneer je tertiaire operatoren gebruikt.

Bouw je Python-vaardigheden uit

Tertiaire operatoren zijn pareltjes in Python. Ze stellen je in staat om gestroomlijnde, efficiënte code te schrijven door complexe conditionele logica samen te vatten in één elegante regel.

Het omarmen van tertiaire operatoren verbetert niet alleen de leesbaarheid van je code, het laat ook zien dat je de expressieve syntaxis van Python goed begrijpt. Naarmate je verder komt in je Python-reis, zal het inzetten van deze compacte vorm van conditionele expressies je codeervaardigheden aanscherpen en leiden tot verfijndere, gepolijste scripts.

Hier zijn een paar links om je Python-vaardigheden op te bouwen en stap voor stap hogerop te komen in Python-programmeren.

FAQs

Wat is een tertiaire operator in Python?

Een tertiaire operator is een conditionele expressie die een voorwaarde evalueert en op basis daarvan één van twee waarden retourneert, afhankelijk van of de voorwaarde waar of onwaar is. De syntaxis van een tertiaire operator in Python is value_if_true if condition else value_if_false. Eerst wordt de voorwaarde geëvalueerd; als die waar is, wordt value_if_true geretourneerd; anders wordt value_if_false geretourneerd.

Wat zijn de voordelen van tertiaire operatoren?

Tertiaire operatoren maken code compacter en in één oogopslag makkelijker te begrijpen. Ze verminderen het aantal regels in je code en verbeteren de leesbaarheid bij eenvoudige voorwaarden.

Wat zijn de nadelen van tertiaire operatoren?

Tertiaire operatoren kunnen de leesbaarheid verbeteren bij eenvoudige voorwaarden, maar bij complexe voorwaarden of geneste operaties kunnen ze de code juist moeilijker leesbaar maken. Overmatig gebruik kan de code lastig te begrijpen maken.

Wanneer moet je tertiaire operatoren vermijden?

Vermijd tertiaire operatoren bij complexe voorwaarden of wanneer de expressie moeilijk te begrijpen wordt. Als de code minder leesbaar wordt, gebruik dan in plaats daarvan traditionele if-else-statements.

Rayan Yassminh

Auteur

Rayan Yassminh

Een veelzijdige Data Scientist/Analyst die expertise in kwantitatieve analyse combineert met geavanceerde technologie. Met een Ph.D. in Geofysica en postdoctorale opleidingen in Kunstmatige Intelligentie en Data Science benut Rayan haar sterke probleemoplossende vaardigheden om bruikbare inzichten uit complexe datasets te halen. Rayans onderzoeksbijdragen bestrijken uiteenlopende domeinen en laten zien hoe ze geavanceerde technieken toepast op vraagstukken uit de echte wereld.

Onderwerpen