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ă:

Valori adevarate si false in Python o introducere detaliata

Î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 considerate Falsy.
  • Valori care evaluează până la True sunt considerate Truthy.

In conformitate cu Documentație Python:

Orice obiect poate fi testat pentru valoarea adevărului, pentru a fi utilizat într-un if sau while 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:

1611607987 205 Valori adevarate si false in Python o introducere detaliata

💡 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 sau False. x (argumentul) este convertit utilizând procedura standard de testare a adevărului.

1611607987 104 Valori adevarate si false in Python o introducere detaliata

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 la False.
  • not data va fi echivalent cu not False, care este True.
  • 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 cu not True, care este False .
  • 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 revine False 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, și False.
  • 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. ⭐️