Bine ati venit
În acest articol, veți afla:
- Ce sunt valorile adevărate și false.
- Ceea ce face o valoare adevărată sau falsă.
- Cum se utilizează
bool()
funcție pentru a determina dacă o valoare este adevărată sau falsă. - Cum se fac obiecte din clasele definite de utilizator cu adevărat sau fals folosind metoda specială
__bool __
.
Sa incepem! ✨
???? Valori Adevăr vs. Valori Adevăr și Fals
Permiteți-mi să vă prezint aceste concepte comparându-le cu valorile True
și False
cu care lucrăm de obicei.
Expresiile cu operanzi și operatori evaluează la oricare dintre ele True
sau False
și pot fi utilizate într-un if
sau while
condiție pentru a determina dacă ar trebui să ruleze un bloc de cod.
Aici avem un exemplu:
# Expression 5 < 3
>>> if 5 < 3:
print("True")
else:
print("False")
# Output
False
În acest exemplu, totul funcționează așa cum ne așteptam, deoarece am folosit o expresie cu doi operanzi și un operator 5 < 3
.
Dar ce crezi că se va întâmpla dacă încercăm să rulăm acest cod?
>>> a = 5
>>> if a:
print(a)
Observați că acum nu avem o expresie tipică lângă if
cuvânt cheie, doar o variabilă:

În mod surprinzător, rezultatul este:
5
Dacă schimbăm valoarea a
la zero, astfel:
>>> a = 0
>>> if a:
print(a)
Nu există nicio ieșire.
Sunt sigur că trebuie să întrebi acest lucru chiar acum: ce a făcut ca codul să ruleze cu succes?
Variabila a
nu este o expresie tipică. Nu are operatori și operanzi, așa că de ce a evaluat True
sau False
in functie de valoarea sa?
Răspunsul se află pe conceptul de valori Truthy și Falsy, care nu sunt valori ale adevărului în sine, dar se evaluează la fiecare True
sau False
.
???? Valori neplăcute și falsificate
În Python, individual valori poate evalua la oricare True
sau False
. Nu trebuie neapărat să facă parte dintr-o expresie mai largă pentru a evalua la o valoare de adevăr, deoarece au deja una care a fost determinată de regulile limbajului Python.
Regulile de bază sunt:
- Valori care evaluează până la
False
sunt considerateFalsy
. - Valori care evaluează până la
True
sunt considerateTruthy
.
In conformitate cu Documentație Python:
Orice obiect poate fi testat pentru valoarea adevărului, pentru a fi utilizat într-un
if
sauwhile
condiție sau ca operand al operațiilor booleene de mai jos (și, sau, nu).
???? Context boolean
Când folosim o valoare ca parte a unei expresii mai mari sau ca if
sau while
condiție, o folosim într-un context boolean.
Vă puteți gândi la un context boolean ca la o anumită „parte” a codului dvs. care necesită o valoare True
sau False
a avea sens.
De exemplu, (vezi mai jos) starea după if
cuvânt cheie sau după while
cuvântul cheie trebuie să fie evaluat True
sau False
:

???? Bacsis: Valoarea poate fi stocată într-o variabilă. Putem scrie numele variabilei după if
sau while
cuvânt cheie în loc de valoarea în sine. Aceasta va oferi aceeași funcționalitate.
Acum, că știți ce sunt valorile adevărate și false și cum funcționează acestea într-un context boolean, să vedem câteva exemple reale de valori adevărate și false.
???? Valorile falsului
Secvențe și colecții:
- Liste goale
[]
- Tupluri goale
()
- Dicționare goale
{}
- Seturi goale
set()
- Șiruri goale
""
- Intervalele goale
range(0)
Numere
- Zero de orice tip numeric.
- Întreg:
0
- Pluti:
0.0
- Complex:
0j
Constante
None
False
Valorile falsului au fost motivul pentru care nu a existat nicio ieșire în exemplul nostru inițial atunci când valoarea lui a
a fost zero.
Valoarea 0
este fals, deci if
starea va fi False
iar condiționalul nu va rula în acest exemplu:
>>> a = 0
>>> if a:
print(a)
# No Output
???? Valori Adevărate
In conformitate cu Documentație Python:
În mod implicit, este luat în considerare un obiect Adevărat.
Valorile adevărate includ:
- Secvențe sau colecții non-goale (liste, tupluri, șiruri, dicționare, seturi).
- Valori numerice care nu sunt zero.
True
Acesta este motivul pentru care valoarea a
a fost tipărit în exemplul nostru inițial, deoarece valoarea sa era 5 (o valoare adevărată):
>>> a = 5
>>> if a:
print(a)
# Output
5
???? Funcția încorporată bool ()
Puteți verifica dacă o valoare este fie reală, fie falsă cu ajutorul funcției încorporate bool()
funcţie.
In conformitate cu Documentație Python, această funcție:
Returnează o valoare booleană, adică una dintre
True
sauFalse
. x (argumentul) este convertit utilizând procedura standard de testare a adevărului.

Trebuie doar să transmiteți valoarea ca argument, astfel:
>>> bool(5)
True
>>> bool(0)
False
>>> bool([])
False
>>> bool({5, 5})
True
>>> bool(-5)
True
>>> bool(0.0)
False
>>> bool(None)
False
>>> bool(1)
True
>>> bool(range(0))
False
>>> bool(set())
False
>>> bool({5, 6, 2, 5})
True
???? Bacsis: De asemenea, puteți trece o variabilă ca argument pentru a testa dacă valoarea sa este adevărată sau falsă.
???? Exemple reale
Unul dintre avantajele utilizării valorilor adevărate și false este că acestea vă pot ajuta să vă faceți codul mai concis și mai ușor de citit. Aici avem două exemple reale.
Exemplu:
Avem această funcție print_even()
care ia ca argument o listă sau un tuplu care conține numere și tipărește doar valorile care sunt pare. Dacă argumentul este gol, acesta imprimă un mesaj descriptiv:
def print_even(data):
if len(data) > 0:
for value in data:
if value % 2 == 0:
print(value)
else:
print("The argument cannot be empty")
Observați această linie:
if len(data) > 0:
Putem face condiția mult mai concisă cu valori adevărate și false:
if data:
Dacă lista este goală, data
va evalua la False
. Dacă nu este gol, se va evalua la True
. Obținem aceeași funcționalitate cu un cod mai concis.
Aceasta ar fi funcția noastră finală:
def print_even(data):
if data:
for value in data:
if value % 2 == 0:
print(value)
else:
print("The argument cannot be empty")
Exemplu:
De asemenea, am putea folosi valori adevărate și false pentru a ridica o excepție (eroare) atunci când argumentul transmis unei funcții nu este valid.
>>> def print_even(data):
if not data:
raise ValueError("The argument data cannot be empty")
for value in data:
if value % 2 == 0:
print(value)
În acest caz, utilizând not data
ca condiție a if
afirmație, obținem valoarea de adevăr opusă a data
pentru if
condiție.
Să analizăm not data
in detaliu:
Dacă data
este gol:
- Va fi o valoare falsă, deci
data
va evalua laFalse
. -
not data
va fi echivalent cunot False
, care esteTrue
. - Condiția va fi
True
. - Excepția va fi ridicată.
Dacă data
Nu este gol:
- Va fi o valoare adevărată, deci va evalua până la
True
. -
not data
va fi echivalent cunot True
, care esteFalse
. - Condiția va fi
False
. - Excepția nu va fi ridicată.
???? Realizarea unor obiecte personalizate cu adevărate și valori falsificate
Dacă sunteți familiarizați cu clasele și cu programarea orientată pe obiecte, puteți adăuga o metodă specială claselor dvs. pentru a face obiectele să acționeze ca valori adevărate și false.
__bool __ ()
Cu metoda specială __bool__()
, puteți seta o condiție „personalizată” care va determina când va evalua un obiect din clasa dvs. True
sau False
.
In conformitate cu Documentație Python:
În mod implicit, un obiect este considerat adevărat, cu excepția cazului în care clasa sa definește fie a
__bool__()
metoda care revineFalse
sau a__len__()
metoda care returnează zero, atunci când este apelată cu obiectul.
De exemplu, dacă avem această clasă foarte simplă:
>>> class Account:
def __init__(self, balance):
self.balance = balance
Puteți vedea că nu sunt definite metode speciale, astfel încât toate obiectele pe care le creați din această clasă vor fi întotdeauna evaluate True
:
>>> account1 = Account(500)
>>> bool(account1)
True
>>> account2 = Account(0)
>>> bool(account2)
True
Putem personaliza acest comportament adăugând metoda specială __bool__()
:
>>> class Account:
def __init__(self, balance):
self.balance = balance
def __bool__(self):
return self.balance > 0
Acum, dacă soldul contului este mai mare decât zero, obiectul va evalua la True
. În caz contrar, dacă soldul contului este zero, obiectul va evalua la False
.
>>> account1 = Account(500)
>>> bool(account1)
True
>>> account2 = Account(0)
>>> bool(account2)
False
???? Bacsis: Dacă __bool__()
nu este definit în clasă, ci __len__()
metoda este, valoarea returnată prin această metodă va determina dacă obiectul este adevărat sau fals.
???? În rezumat
- Valorile adevărate sunt valori care se evaluează la
True
într-un context boolean. - Valorile falsului sunt valori care se evaluează la
False
într-un context boolean. - Valorile falsului includ secvențe goale (liste, tupluri, șiruri, dicționare, seturi), zero în fiecare tip numeric,
None
, șiFalse
. - Valorile adevărate includ secvențe care nu sunt goale, numere (cu excepția
0
în fiecare tip numeric), și practic fiecare valoare care nu este falsă. - Acestea pot fi folosite pentru a vă face codul mai concis.
Sper cu adevărat că ți-a plăcut articolul meu și l-ai găsit util. Acum puteți lucra cu valori adevărate și false în proiectele dvs. Python. Vezi cursurile mele online. Urmărește-mă Stare de nervozitate. ⭐️