Python’un mantıksal operatörleri ve, veya, ve değil (mantıksal bağlaç, ayrılma, olumsuzlama)

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,notOperatö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,orBu 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.

  1. not
  2. and
  3. 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.

xyx and yx or y
truefalseyx
falsetruexy
truetrueyx
falsefalsexy

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,orBu 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
Copied title and URL