or
işlecinin davranışıyla karıştırılıyorsunuz; ilk ifade, yalnızca true değeri ise; ne 0
de False
ikinci değer döndürülür, böylece de geçerlidir:
>>> 0 or 'bar'
'bar'
>>> False or 'foo'
'foo'
sayısal 0, özel sınıfları __bool__
yöntemi uygulayarak bu değiştirebilir boş kap, None
veya False
(doğru olarak kabul edilir (olmayan herhangi bir değer piton 3), __nonzero__
(piton 2) veya __len__
(uzunluk 0) boş
ikinci ifade da değerlendirilmez ilk True
ise.
>>> True or 1/0
True
1/0
ifadesi, ZeroDivision
istisnasını artıracaktır, ancak Python tarafından bile değerlendirilmemektedir.
Bu
boolean operators documentation belgelenmiştir:
ilk x or y
x
değerlendirir ifade; x
doğruysa, değeri döndürülür; aksi halde y
değerlendirilir ve elde edilen değer döndürülür. Bu False
ise
Benzer bir şekilde, aksi takdirde and
ikinci ifade döndürülür, ilk ifade döndürür.
Bu değerlerin her ikisinin de "falsi" olduğuna dikkat edin; Yani, her ikisi de bir if ifadesinde "False" olarak değerlendirirler. –