Pythons `truthy` och `falsy`

Pythons `truthy` och `falsy`

Den här artikeln förklarar Pythons truthy och falsy.

YouTube Video

Pythons truthy och falsy

Definition av truthy och falsy

I Python bedöms objekt i villkorsuttryck som antingen 'True' eller 'False'. Truthy hänvisar till objekt som bedöms som 'True', och falsy hänvisar till objekt som bedöms som 'False'. Dessa utvärderingar används ofta i villkorsgrenar som if-satser eller while-loopar. Dessutom tar bool()-funktionen vilket objekt som helst och returnerar dess booleska värde.

Falsy (Objekt som bedöms som False)

I Python anses följande objekt vara falsy:.

  • Falsk

  • Ingen

  • Numeriska nollvärden

    • Exempel: 0, 0.0
  • Tomma sekvenstyper (som tomma listor, tupler eller strängar)

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

    • Exempel: {}
  • Tom mängd

    • Exempel: set()

Dessa objekt utvärderas som 'falsy' när de används i villkoret för ett if-uttryck. Till exempel kan du skriva kod som denna.

1if not []:
2    print("The list is falsy.")
  • I den här koden är listan [] tom, så den utvärderas som falsy, och print-uttrycket körs.

Truthy (Objekt som bedöms som True)

Objekt som inte anses vara falsy betraktas som truthy.

  • Icke-nollskilda tal (heltal, flyttal)

    • Exempel: 1, 3.14, -100
  • Icke-tomma sekvenstyper (listor, tupler, strängar, etc.)

    • Exempel: [1, 2, 3], (1, 2), "Hello"
  • Icke-tomma ordböcker

    • Exempel: {"key": "value"}
  • Icke-tomma mängder

    • Exempel: {1, 2, 3}

Objekt som anses som truthy kommer att utvärderas som 'True' när de används i villkoret för ett if-uttryck. Till exempel kan du skriva kod som denna.

1if [1, 2, 3]:
2    print("The list is truthy.")
  • I koden ovan, eftersom listan [1, 2, 3] inte är tom, utvärderas den som truthy och print-uttrycket utförs.

Utvärdera booleskt värde med bool()-funktionen

Du kan utvärdera objektens booleska värde genom att använda bool()-funktionen.

 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")
  • Den här koden visar hur sanningsvärdet för olika värden utvärderas. Till exempel betraktas det numeriska värdet 0 och en tom sträng som False, medan ett mellanslag eller strängen "0" betraktas som True.

Användning av truthy och falsy

Genom att använda truthy och falsy kan kod skrivas mer kortfattat och intuitivt. I synnerhet kan if-uttryck ofta utvärderas utan explicita jämförelser för att göra dem kortare. Till exempel fungerar följande två kodexempel på liknande sätt, men det första är mer kortfattat.

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 exemplet ovan kan du se att my_list utvärderas som truthy så länge det inte är en tom lista, vilket eliminerar behovet av en explicit jämförelse.

Designa med truthy och falsy

Genom att effektivt använda koncepten truthy och falsy kan du förbättra kodläsbarhet och effektivitet. De är särskilt användbara för att ange standardvärden, kontrollera variabels giltighet och validera indata. Till exempel, om du förväntar dig att Ingen eller en tom lista skickas som argument, kan du skriva kod som denna.

1def process_data(data=None):
2    data = data or []
3    print(data)
4
5process_data()  # An empty list is used by default.
  • I denna kod, om data är None, sätts en tom lista [] som standardvärde. På detta sätt gör användningen av truthy och falsy det möjligt att sätta standardvärden på ett kortfattat sätt.

Viktiga punkter att notera för att undvika oönskat beteende

Dock kan kod som använder truthy och falsy värden vara koncis och bekväm, men man bör vara medveten om att det kan orsaka oönskat beteende. Till exempel, i denna kod, inte bara när data är None, utan också när det är ett värde som utvärderas som False, såsom en tom sträng eller 0, kommer det att ersättas med en tom lista [] som standardvärde. Av denna anledning, när ett striktare villkor krävs, såsom att initiera endast när värdet är None, rekommenderas det att använda ett explicit villkor som value is None:. Beroende på situationen är det viktigt att utforma med en balans mellan kortfattad kod och noggrannhet i åtanke.

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 den här koden initialiseras data till en tom lista endast om det är None, medan andra falska värden som 0 lämnas oförändrade.

Kontrollera booleskt värde i egna objekt

Även i egna klasser kan du kontrollera instansens booleska värde genom att definiera __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 denna kod gör __len__()-metoden att behållaren utvärderas som False när den är tom, och som True när den har element.

Slutsats

Koncepten truthy och falsy i Python är mycket viktiga för att skriva kortfattade villkorsuttryck och göra koden mer intuitiv. Att förstå och använda dessa på rätt sätt kan avsevärt förbättra kodens läsbarhet och effektivitet.

Du kan följa med i artikeln ovan med hjälp av Visual Studio Code på vår YouTube-kanal. Vänligen kolla även in YouTube-kanalen.

YouTube Video