Python, mantıksal (Boolean) işlemleri gerçekleştirmek için mantıksal operatörler sağlar.(and
,or
,not
)
Bir if ifadesinde birden çok koşul arasındaki ilişkiyi açıklamak için kullanılır.
Bu bölüm aşağıdakileri açıklar.
- kavşak:
and
- mantıksal ekleme:
or
- inkar:
not
and
,or
,not
Operatör Önceliği
Ayrıca, aşağıdaki noktalar uyarı olarak açıklanmıştır.
- bool dışındaki türdeki nesneler için mantıksal operatörler
and
,or
Bu dönüş değerlerinin bool türünde olması gerekmez.- Kısa devre (kısa devre değerlendirmesi)
kavşak:and
ve iki değerin mantıksal ürününü döndürür.
print(True and True)
# True
print(True and False)
# False
print(False and True)
# False
print(False and False)
# False
Aslında, genellikle doğru veya yanlış için değil, karşılaştırma operatörlerini kullanan koşullu ifadeler için kullanılır. Bilginize, karşılaştırma operatörleri aşağıdaki gibidir.
<
>
a = 10
print(0 < a)
# True
print(a < 100)
# True
print(0 < a and a < 100)
# True
ve aşağıdaki gibi birleştirilebilir.
print(0 < a < 100)
# True
mantıksal ekleme:or
veya iki değerin mantıksal VEYA’sını döndürür.
print(True or True)
# True
print(True or False)
# True
print(False or True)
# True
print(False or False)
# False
inkar:not
not”, değerin olumsuzluğunu döndürür; true ve false tersine çevrilir.
print(not True)
# False
print(not False)
# True
and,or,notOperatör Önceliği
Bu mantıksal operatörlerin öncelik sırası şu şekildedir: not en yüksek değildir.
not
and
or
Aşağıdaki örnek kodda, yukarıdaki ifade, aşağıdaki ifadeymiş gibi yorumlanır. Fazladan parantez kullanmakta bir sorun olmadığı için bu örnekteki gibi durumlarda bunları net bir şekilde anlatmak daha kolay olabilir.
print(True or True and False)
# True
print(True or (True and False))
# True
Çalıştırmak istiyorsanız veya öncesinde ve, parantez() kullanın.
print((True or True) and False)
# False
<
,>
Bu karşılaştırma operatörleri, olmamasından bile daha yüksek önceliğe sahiptir. Bu nedenle, yukarıdaki örnekte olduğu gibi, her karşılaştırma işlemi için parantez gerekli değildir.
print(0 < a and a < 100)
# True
Python’da operatör önceliğinin bir özeti için aşağıdaki resmi belgelere bakın.
bool dışındaki türdeki nesneler için mantıksal operatörler
With these logical operators, not only bool types (true, false), but also numbers, strings, lists, etc. are processed as boolean values.
Aşağıdaki nesneler Python’un mantıksal işlemlerinde yanlış olarak kabul edilir.
- false olarak tanımlanan sabitler:
None
,false
- Sayısal türlerde sıfır:
0
,0
,0j
,Decimal(0)
,Fraction(0, 1)
- Boş dizi veya koleksiyon:
'
,()
,[]
,{}
,set()
,range(0)
Diğer tüm değerler doğru kabul edilir.
bool() işlevi, bir nesnenin boole değerini almak için kullanılabilir. ‘0’ veya ‘Yanlış’ dizesinin doğru kabul edildiğini unutmayın.
print(bool(10))
# True
print(bool(0))
# False
print(bool(''))
# False
print(bool('0'))
# True
print(bool('False'))
# True
print(bool([]))
# False
print(bool([False]))
# True
Bir dizgede ‘0’ veya ‘yanlış’ı false olarak işlemek için distutils.util.strtobool() kullanın.
and,orBu dönüş değerlerinin bool türünde olması gerekmez.
Burada, her operatörün sonucunu sayısal bir değerde gösteren, bool türünden farklı bir nesne örneği verilmiştir.
x = 10 # True
y = 0 # False
print(x and y)
# 0
print(x or y)
# 10
print(not x)
# False
Yukarıdaki örnekten de görebileceğiniz gibi ve ve/veya Python’da bool türünde true veya false döndürmez, true veya false olmasına bağlı olarak değeri solda veya sağda döndürür. Örnek sayısaldır, ancak aynısı dizeler ve listeler gibi diğer türler için de geçerlidir. Bu arada, bool türünde true veya false döndürmez.
ve ve veya öğelerinin dönüş değerlerinin tanımları aşağıdaki gibidir.
The expression x and y first evaluates x; if x is false, its value is returned; otherwise, y is evaluated and the resulting value is returned.
The expression x or y first evaluates x; if x is true, its value is returned; otherwise, y is evaluated and the resulting value is returned.
6.11. Boolean operations — Expressions — Python 3.10.1 Documentation
Sol ve sağ ifadelerin değerleri ayrı ayrı true ve false olduğunda, dönüş değerlerinin anlaşılması kolaydır. Öte yandan, her ikisi de doğruysa veya her ikisi de yanlışsa, dönüş değeri sıraya bağlı olarak farklı olacaktır.
Bir if deyiminde vb. koşullu bir ifade olarak kullanırsanız, sonuç bir boole değeri olarak değerlendirilir ve işlenir, bu nedenle endişelenmenize gerek yoktur, ancak dönüş değerini daha sonraki işlemler için kullanırsanız, dikkatli olmak gerekir.
x = 10 # True
y = 100 # True
print(x and y)
# 100
print(y and x)
# 10
print(x or y)
# 10
print(y or x)
# 100
x = 0 # False
y = 0.0 # False
print(x and y)
# 0
print(y and x)
# 0.0
print(x or y)
# 0.0
print(y or x)
# 0
print(bool(x and y))
# False
Doğru veya yanlış olarak ele almak istiyorsanız, son örnekteki gibi yapabilirsiniz.bool(x and y)
ve ve veya öğelerinin dönüş değerleri aşağıdaki tabloda özetlenmiştir.
x | y | x and y | x or y |
---|---|---|---|
true | false | y | x |
false | true | x | y |
true | true | y | x |
false | false | x | y |
Kısa devre (kısa devre değerlendirmesi)
Yukarıdaki tablodan da görebileceğiniz gibi, x ve y’de x false ise veya x veya y’de x true ise, y’nin değerinden bağımsız olarak dönüş değeri x olacaktır.
Böyle bir durumda y değerlendirilmez.
and
,or
Bu işlemlerin sağ tarafında bir fonksiyon veya metot çağırdığınızda bazı işlemleri yapmak için, sol taraftaki sonuca bağlı olarak işlemin yürütülmeyebileceğini unutmayın.
def test():
print('function is called')
return True
print(True and test())
# function is called
# True
print(False and test())
# False
print(True or test())
# True
print(False or test())
# function is called
# True