Ga naar hoofdinhoud

De assert-instructie in Python gebruiken

De assert-instructie in Python implementeren is eenvoudig: we gebruiken assert om voorwaarden te testen en een bericht weer te geven als de voorwaarde onwaar is.
· 6 min lezen

Verken met AI

De assert-instructie in Python is een hulpmiddel om fundamentele waarheden in je code vast te leggen. Ze werken door ontwikkelaars in staat te stellen aannames binnen hun code te valideren. In deze tutorial beheersen we de assert-instructie van Python, inclusief de syntaxis, het gebruik en toepassingen bij debuggen en foutdetectie. Door de assert-instructie van Python onder de knie te krijgen, ben je weer een stap dichter bij het worden van een expert Python Programmeur. 

Het korte antwoord: zo schrijf je Python-assertions 

De syntaxis van de assert-instructie is eenvoudig:

assert condition, message

Hier verwijst condition naar de uitdrukking die wordt getest, terwijl message een optioneel foutbericht is dat verschijnt als de assertion faalt.

Hier zijn een paar assertions die je in je Python-code kunt uitproberen om het onder de knie te krijgen. In het eerste geval is de uitdrukking 3<4>5 logisch onjuist, dus Python geeft een AssertionError met het door ons opgegeven bericht: "Math does not work that way." In het tweede geval is de uitdrukking 0==0 een tautologie, dus we zien het bericht "This shouldn't throw an error." niet. 

assert 3<4>5, "Math does not work that way."
assert 0==0, "This shouldn't throw an error."

Overzicht van de assert-instructie in Python

Laten we nu de assert-instructie van Python van dichterbij bekijken, inclusief hoe en waarom deze wordt gebruikt. Aan het einde van deze tutorial weet je precies hoe je de assert-instructie in Python gebruikt. 

Wat zijn Python-assertions?

Assertions in programmeren zijn in het algemeen constructies die worden gebruikt om de juistheid van voorwaarden in de codebase te verifiëren. Met andere woorden: het zijn waarheden waar het programma aan moet voldoen, anders wordt er een fout gegenereerd. Door het woord "assert" te gebruiken, implementeert Python deze programmeer-assertions met een zeer letterlijke syntaxis: met de assert-instructie kunnen we deze assertions creëren.

Wanneer gebruik je Python-assertions

Assertions zijn van onschatbare waarde voor debuggen, het valideren van aannames en ervoor zorgen dat je code zich onder specifieke omstandigheden gedraagt zoals verwacht. Ze stellen je in staat de computer te vertellen wat je verwacht dat hij doet en hem te vragen te stoppen wanneer hij iets anders doet. Dit is handig bij het bouwen van een nieuw programma of het toevoegen van een feature of het updaten van een bestaande app.

Assertions komen vooral tot hun recht in scenario’s waarin ontwikkelaars precondities, postcondities of invarianten binnen hun codebase moeten afdwingen. Ze fungeren als vangrails: als bepaalde voorwaarden worden geschonden, voorkomen ze dat de code verder gaat, wat helpt bij het vroegtijdig detecteren van potentiële bugs.

Door assertions strategisch door de code te plaatsen, kun je fouten dichter bij hun oorsprong vangen, waardoor debuggen eenvoudiger wordt. De career track Python Developer van DataCamp is een geweldige cursus voor aspirant-ontwikkelaars van elk niveau om functionele programmeervaardigheden te oefenen, omdat deze oefeningen bevat met zowel basis- als meer geavanceerde concepten.

Wanneer je Python-assertions niet gebruikt

Hoewel assertions tijdens de ontwikkeling van onschatbare waarde zijn, zijn er scenario’s waarin het gebruik ervan ongeschikt kan zijn.

Het is belangrijk te begrijpen dat wanneer je code voor productie wordt gecompileerd, assertions mogelijk globaal worden uitgeschakeld. Dit betekent dat je niet op assertions moet vertrouwen om runtime-problemen af te handelen, zoals een gebruiker die onjuiste gegevens invoert. Gebruik ze in plaats daarvan voor ontwikkelproblemen, zoals het identificeren van logische of rekenfouten.

Voor het afhandelen van fouten of het valideren van gegevens in productcode kun je beter exceptie-afhandeling gebruiken, zodat de code zich netjes kan herstellen van fouten, relevante informatie voor debuggen kan loggen en betekenisvolle feedback aan gebruikers kan geven.

Je kunt meer leren over het vinden en corrigeren van fouten in onze tutorial Exception and Error Handling in Python of door onze cursus Associate Data Scientist in Python te volgen. 

Veelgemaakte fouten en misvattingen rond de assert-instructie in Python

Een veelgemaakte fout bij het gebruik van de assert-instructie in Python is het gebruik van haakjes. Dat is begrijpelijk, omdat veel functies haakjes gebruiken en het opnemen ervan als vanzelf kan aanvoelen. De assert-instructie is echter technisch gezien geen functie in Python en gebruikt daarom een speciale syntaxis. Als je haakjes gebruikt, loop je waarschijnlijk tegen syntaxiswaarschuwingen en logische fouten aan.

Voorbeeld van een fout doordat haakjes zijn gebruikt in een assert-instructie.SyntaxWarning: assertion is always true, perhaps remove parentheses?

Een andere veelgemaakte fout is het vergeten van de komma na de voorwaarde. Dit resulteert in een syntaxfout.

Voorbeeld van een fout door een ontbrekende komma in een assert-instructie.SyntaxError: invalid syntax

De AssertionError-exceptie

Een AssertionError-exceptie wordt gegenereerd wanneer de voorwaarden van een assertion worden geschonden. Deze fout stopt de uitvoering van het programma; elk optioneel foutbericht dat je instelt, wordt weergegeven. Aangezien assertions primair worden gebruikt om je code tijdens de ontwikkeling te testen, wil je een Python-bericht met AssertionError over het algemeen serieus nemen. Het kan wijzen op een fatale fout in je code.

Praktische toepassingen

Een assert-instructie kan in veel praktische toepassingen in Python worden gebruikt. Onze interactieve cursus Writing Functions in Python biedt veel oefeningen die je zullen helpen dit onder de knie te krijgen. Hier zijn een paar voorbeelden. 

Assert gebruiken binnen een functie

Een handige manier om assertions te gebruiken, is door ze in functies op te nemen. Dit kan helpen ervoor te zorgen dat je functies zich gedragen zoals bedoeld.

def divide(a, b):
assert b != 0, "Division by zero!"
return a / b

# Test cases
print(divide(10, 2))  # Output: 5.0
print(divide(8, 0))   # AssertionError: Division by zero!

Assert gebruiken met unittest

Het testen van je code is een essentiële stap in het ontwikkelproces. Unittest is een bibliotheek die is ontworpen om je te helpen je code efficiënt te testen en maakt daarbij gebruik van assert-instructies. Dit is de manier waarop ik assert-instructies het vaakst gebruik. Hier is een voorbeeld dat je kunt tegenkomen in onze cursus Introduction to Testing in Python. 

import unittest

class TestMathFunctions(unittest.TestCase):
    def test_addition(self):
        self.assertEqual(2 + 2, 4)

    def test_subtraction(self):
        self.assertEqual(5 - 3, 2)

    def test_division(self):
        self.assertRaises(ZeroDivisionError, divide, 10, 0)

if __name__ == '__main__':
    unittest.main()

Conclusie

De assert-instructie van Python is een essentieel hulpmiddel voor debuggen en het verifiëren van voorwaarden in je code tijdens de ontwikkeling. Hoewel eenvoudig en effectief om aannames te testen, moet je er in productie niet op vertrouwen omdat deze in gecompileerde code kan worden uitgeschakeld. Gebruik in plaats daarvan exceptie-afhandeling voor robuust foutbeheer. 

Overweeg onze tutorial Coding Best Practices and Guidelines te lezen als naslag voor resterende vragen.

Amberle McKee

Auteur

Amberle McKee

Ik ben gepromoveerd en heb 13 jaar ervaring met het werken met data in een biologische onderzoeksomgeving. Ik maak software in verschillende programmeertalen, waaronder Python, MATLAB en R. Ik deel met plezier mijn liefde voor leren met de wereld.

Onderwerpen

Gerelateerd