Pythons `truthy` og `falsy`

Pythons `truthy` og `falsy`

Denne artikkelen forklarer Pythons truthy og falsy.

YouTube Video

Pythons truthy og falsy

Definisjon av truthy og falsy

I Python vurderes objekter i betingede uttrykk som enten 'True' eller 'False'. Truthy refererer til objekter som evalueres som 'True', og falsy til de som evalueres som 'False'. Disse evalueringene brukes ofte i betingede grener som if-setninger eller while-løkker. I tillegg tar bool()-funksjonen et hvilket som helst objekt og returnerer dets boolske verdi.

Falsy (Objekter evaluert som False)

I Python regnes følgende objekter som falsy:.

  • False

  • None

  • Numeriske nullverdier

    • Eksempel: 0, 0.0
  • Tom sekvenstype (slik som tomme lister, tupler eller strenger)

    • Eksempel: [], (), ""
  • Tom ordbok

    • Eksempel: {}
  • Tom mengde

    • Eksempel: set()

Disse objektene blir evaluert som 'falske' når de brukes i en betingelse for en if-setning. For eksempel, kan du skrive kode som dette.

1if not []:
2    print("The list is falsy.")
  • I denne koden er listen [] tom, så den blir evaluert som falsk, og print-setningen blir utført.

Truthy (Objekter evaluert som True)

Objekter som ikke regnes som falsy, regnes som truthy.

  • Ikke-null-tall (heltall, flyttall)

    • Eksempler: 1, 3.14, -100
  • Ikke-tomme sekvenstyper (lister, tupler, strenger, osv.)

    • Eksempler: [1, 2, 3], (1, 2), "Hello"
  • Ikke-tomme ordbøker

    • Eksempel: {"key": "value"}
  • Ikke-tomme mengder

    • Eksempel: {1, 2, 3}

Objekter som regnes som truthy, vil evalueres som 'True' når de brukes i en if-betingelse. For eksempel, kan du skrive kode som dette.

1if [1, 2, 3]:
2    print("The list is truthy.")
  • I koden over, siden listen [1, 2, 3] ikke er tom, evalueres den som truthy og print-setningen utføres.

Evaluering av boolske verdier med bool()-funksjonen

Du kan evaluere objektets boolske verdi ved å bruke bool()-funksjonen.

 1# Examples of falsy values
 2print("False is", "truthy" if bool(False) else "falsy")
 3print("0 is", "truthy" if bool(0) else "falsy")
 4print('"" is', "truthy" if bool("") else "falsy")
 5print("None is", "truthy" if bool(None) else "falsy")
 6print("[] is", "truthy" if bool([]) else "falsy")
 7
 8# Examples of truthy values
 9print("1 is", "truthy" if bool(1) else "falsy")
10print('"hello" is', "truthy" if bool("hello") else "falsy")
11print('" " (space) is', "truthy" if bool(" ") else "falsy")
12print('"0" is', "truthy" if bool("0") else "falsy")
  • Denne koden demonstrerer hvordan sannhetsverdien til ulike verdier vurderes. For eksempel anses den numeriske verdien 0 og en tom streng som False, mens et mellomrom eller strengen "0" anses som True.

Bruk av truthy og falsy

Ved å bruke truthy og falsy kan koden skrives mer kortfattet og intuitivt. Spesielt kan if-setninger ofte evalueres uten eksplisitte sammenligninger for å gjøre dem kortere. For eksempel oppfører de to følgende kodebitene seg likt, men den første er mer kortfattet.

1my_list = [1]
2
3# Explicit comparison
4if my_list != []:
5    print("The list is not empty.")
6
7# Using truthy/falsy
8if my_list:
9    print("The list is not empty.")

I eksempelet ovenfor kan du se at my_list blir evaluert som truthy så lenge det ikke er en tom liste, noe som eliminerer behovet for eksplisitt sammenligning.

Design med truthy og falsy

Ved å bruke konseptene truthy og falsy effektivt kan du forbedre lesbarheten og effektiviteten i koden. De er spesielt nyttige for å sette standardverdier, sjekke variabelgyldighet og validere inndata. For eksempel, hvis du forventer at None eller en tom liste skal sendes som argumenter, kan du skrive kode som dette.

1def process_data(data=None):
2    data = data or []
3    print(data)
4
5process_data()  # An empty list is used by default.
  • I denne koden, hvis data er None, settes en tom liste [] som standardverdi. På denne måten kan bruk av truthy og falsy gjøre det enkelt å sette standardverdier.

Viktige punkter for å unngå utilsiktet oppførsel

Selv om kode som bruker truthy og falsy-verdier kan være kortfattet og praktisk, må du være klar over at det kan forårsake utilsiktet oppførsel. For eksempel, i denne koden blir ikke bare data når det er None, men også enhver verdi som evalueres som False, slik som en tom streng eller 0, erstattet med den tomme standardlisten []. Av denne grunn, når det kreves en strengere betingelse, for eksempel å initialisere bare når verdien er None, anbefales det å bruke en eksplisitt betingelse som value is None:. Avhengig av situasjonen, er det viktig å designe med en balanse mellom korthet og grundighet i tankene.

1def process_data(data=None):
2    if data is None:
3        data = []
4    print(data)
5
6process_data()   # An empty list is used by default.
7process_data(0)  # 0 is printed because it's not None.
  • I denne koden initialiseres data til en tom liste kun hvis den er None, mens andre falske verdier som 0 forblir uendret.

Styring av boolske verdier i egendefinerte objekter

Selv i dine egne klasser kan du styre instansens boolske verdi ved å definere __bool__() eller __len__().

 1class MyContainer:
 2    def __init__(self, items):
 3        self.items = items
 4
 5    def __len__(self):
 6        return len(self.items)
 7
 8box = MyContainer([])
 9print(bool(box))  # False
10
11box.items.append("item")
12print(bool(box))  # True
  • I denne koden gjør __len__()-metoden at containeren evalueres som False når den er tom, og som True når den har elementer.

Konklusjon

Konseptene truthy og falsy i Python er svært viktige for å skrive enkle betingelsesuttrykk og gjøre koden mer intuitiv. Å forstå og bruke dette riktig kan i stor grad forbedre lesbarheten og effektiviteten av koden.

Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.

YouTube Video