Jaką wartość prawdziwości oceniają obiekty w Pythonie?Ocena wyrażeń boolowskich w Pythonie
Podobne pytania
- Boolean Value of Objects in Python: Dyskusja o przesłanianie sposób jest oceniany
Jaką wartość prawdziwości oceniają obiekty w Pythonie?Ocena wyrażeń boolowskich w Pythonie
Podobne pytania
Każdy obiekt może być testowany na prawdę wartości, do wykorzystania w razie lub podczas warunku lub jako argumentu Boolean operacji poniżej. Poniższe wartości są uważane za fałszywe:
Brak
Fałsz
zerowy dowolnego typu liczbowego, na przykład,
0
,0L
,0.0
,0j
.dowolna pusta sekwencja, na przykład
''
,()
,[]
.każde puste odwzorowanie, na przykład
{}
.instancje klasy użytkownika, gdy klasa definiuje
__nonzero__()
lub__len__()
sposób, w przypadku gdy sposób powraca liczbę całkowitą zero lub bool wartośćFalse
.Wszystkie inne wartości są uważane za prawdziwe - więc obiekty wielu typów są zawsze prawdziwe. Operacje i funkcje wbudowane, które mają wynik typu Boolean, zawsze zwracają 0 lub
False
dla wartości false i 1 lubTrue
dla wartości true, chyba że podano inaczej. (Ważny wyjątek: operacje logiczne "lub" i "i" zawsze zwracają jeden z ich argumentów.)
https://docs.python.org/2/library/stdtypes.html#truth-value-testing
I jak wspomniano, można zastąpić z niestandardowych obiektów modyfikując niezerowe.
Aktualizacja: Usunięto wszystkie duplikaty infomation z Meder poście
Dla obiektów niestandardowych w Pythonie < 3.0 __nonzero__
aby zmienić sposób oceny ed. W Pythonie 3.0 jest to __bool__
(Reference przez e-satis)
Ważne jest, aby zrozumieć, co rozumie się przez ocenę. Jednym z nich jest, gdy obiekt jest jawnie rzutowany na bool lub niejawnie rzutowany przez jego położenie (w pętli if lub while).
Innym jest == ewaluacja. 1 == Prawda, 0 == Fałsz, nic innego nie jest równe poprzez ==.
>>> None==False
False
>>> 1==True
True
>>> 0==False
True
>>> 2==False
False
>>> 2==True
False
Wreszcie, ponieważ jest, tylko Prawda czy Fałsz są same w sobie.
niestandardowe obiekty mogą powrócić Prawda/Fałsz oceny logicznej poprzez wdrożenie __nonzero__ – dcrosta
prostu trzeba pamiętać, że w Pythonie 3.0 '__bool__' musi zostać zastąpiona zamiast – Casebash
docs cytujesz są nieprecyzyjne (lub niekompletne); na przykład zestawy nie są ani sekwencjami, ani odwzorowaniami, ale gdy są puste, są również fałszywe. Zrzuciłbym te dwie linie (obejmujące również przypadek zestawów) do "dowolnego pustego ** kontenera **". –