Als developer, wil ik waarden op de juiste manier met elkaar vergelijken en weten wanneer Python iets als True of False ziet, zodat mijn if-statements de juiste beslissing nemen en er geen stille fouten in mijn code sluipen.
0 == False en None
In Python heeft elke waarde een boolean-betekenis. Sommige waarden zijn "falsy" โ
ze gedragen zich als False in een if-statement, ook al
zijn ze geen boolean. Dit heet truthiness.
Met bool() zie je de truthiness van een waarde:
print(bool(0)) # False
print(bool(42)) # True
print(bool("")) # False
print(bool("hallo")) # True
print(bool(None)) # False
None is een speciaal type in Python โ het betekent "geen waarde".
Je checkt er niet op met ==, maar met is:
disk_free = None # nog niet gemeten
if disk_free is None:
print("Geen meting beschikbaar")
if disk_free is not None:
print(f"Vrije ruimte: {disk_free}%")
0 == False is True in Python!
False is intern de waarde 0, en True is 1. Gebruik is
voor exacte type-vergelijkingen als dat uitmaakt.
Klik op een waarde om te zien of hij truthy of falsy is. Probeer ze allemaal!
Schrijf een script dat eerst controleert of disk_free niet None
is, dan of de waarde niet 0 is, en pas daarna de echte ruimte-guard uitvoert.
Test elk geval afzonderlijk.
disk_free = None # test ook met: 0, 15, 80
# Guard 1: is er een meting?
if disk_free is None:
print("Geen meting beschikbaar")
exit()
# Guard 2: schijf helemaal vol?
# TODO
# Guard 3: te weinig ruimte?
# TODO
print(f"Ruimte OK: {disk_free}%")
start_backup()
Acceptatiecriteria
disk_free = None: melding "Geen meting beschikbaar" en stop.disk_free = 0: melding "Schijf helemaal vol" en stop.disk_free = 15: melding "Te weinig ruimte: 15%" en stop.disk_free = 80: melding "Ruimte OK: 80%" en de backup start.is None, niet == None.