Pythons `truthy` og `falsy`

Pythons `truthy` og `falsy`

Denne artikel forklarer Pythons truthy og falsy.

YouTube Video

Pythons truthy og falsy

Definition af truthy og falsy

I Python vurderes objekter i betingede udtryk enten som 'True' eller 'False'. Truthy refererer til objekter, der vurderes som 'True', og falsy refererer til dem, der vurderes som 'False'. Disse vurderinger bruges ofte i betingede grene som if-udtryk eller while-løkker. Derudover tager funktionen bool() et vilkårligt objekt og returnerer dets booleske værdi.

Falsy (Objekter vurderet som False)

I Python betragtes følgende objekter som falsy:.

  • False

  • None

  • Numeriske nullværdier

    • Eksempel: 0, 0.0
  • Tomme sekvenstyper (såsom tomme lister, tupler eller strenge)

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

    • Eksempel: {}
  • Tomt sæt

    • Eksempel: set()

Disse objekter vurderes som 'falske', når de bruges i betingelsen for en if-sætning. For eksempel kan du skrive kode som dette.

1if not []:
2    print("The list is falsy.")
  • I denne kode er listen [] tom, så den vurderes som falsk, og print-sætningen udføres.

Truthy (Objekter vurderet som True)

Objekter, der ikke betragtes som falsy, betragtes som truthy.

  • Ikke-nul-tal (heltal, flydende tal)

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

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

    • Eksempel: {"key": "value"}
  • Ikke-tomme mængder

    • Eksempel: {1, 2, 3}

Objekter, der anses for truthy, vil blive vurderet som 'True', når de bruges i betingelsen i en if-sætning. For eksempel kan du skrive kode som dette.

1if [1, 2, 3]:
2    print("The list is truthy.")
  • I koden ovenfor, da listen [1, 2, 3] ikke er tom, vurderes den som truthy, og print-sætningen udføres.

Vurdering af boolesk værdi med funktionen bool()

Du kan vurdere objekters booleske værdi ved at bruge funktionen bool().

 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 kode demonstrerer, hvordan sandhedsværdien af forskellige værdier vurderes. For eksempel betragtes den numeriske værdi 0 og en tom streng som False, mens et mellemrum eller strengen "0" betragtes som True.

Brug af truthy og falsy

Ved at bruge truthy og falsy kan kode skrives mere kortfattet og intuitivt. Især kan if-sætninger ofte vurderes uden eksplicitte sammenligninger for at gøre dem kortere. For eksempel opfører de følgende to kodeeksempler sig ens, men det første er mere 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 eksemplet ovenfor kan du se, at my_list vurderes som truthy, så længe det ikke er en tom liste, hvilket eliminerer behovet for en eksplicit sammenligning.

Design med truthy og falsy

Ved effektivt at udnytte konceptet truthy og falsy kan du forbedre kodens læsbarhed og effektivitet. De er særligt nyttige til at indstille standardværdier, kontrollere variabel gyldighed og inputvalidering. For eksempel, hvis du forventer, at None eller en tom liste bliver givet 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 kode, hvis data er None, sættes en tom liste [] som standardværdi. På denne måde gør brugen af truthy og falsy det muligt at angive standardværdier på en kortfattet måde.

Punkter at være opmærksom på for at undgå utilsigtet adfærd

Dog kan kode, der bruger truthy og falsy værdier, være kortfattet og praktisk, men vær opmærksom på, at det kan medføre utilsigtet adfærd. For eksempel, i denne kode, ikke kun når data er None, men også når det er en værdi, der vurderes som False, såsom en tom streng eller 0, vil den blive erstattet med den tomme standardliste []. Af denne grund, når en strengere betingelse er påkrævet, såsom kun at initialisere når værdien er None, anbefales det at bruge en eksplicit betingelse som value is None:. Afhængigt af situationen er det vigtigt at designe med en balance mellem kortfattethed og stringens for øje.

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 kode initialiseres data kun til en tom liste, hvis den er None, mens andre falske værdier som 0 forbliver uændrede.

Kontrol af boolesk værdi i brugerdefinerede objekter

Selv i dine egne klasser kan du styre en instans' booleske værdi ved at 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 kode gør __len__()-metoden, at containeren evalueres som False, når den er tom, og som True, når den har elementer.

Konklusion

Konceptet med truthy og falsy i Python er meget vigtigt for at skrive kortfattede betingede udtryk og gøre koden mere intuitiv. At forstå og bruge disse korrekt kan i høj grad forbedre kodens læsbarhed og effektivitet.

Du kan følge med i ovenstående artikel ved hjælp af Visual Studio Code på vores YouTube-kanal. Husk også at tjekke YouTube-kanalen.

YouTube Video