Python'un `truthy` ve `falsy`

Python'un `truthy` ve `falsy`

Bu makale, Python'un truthy ve falsy kavramlarını açıklar.

YouTube Video

Python'un truthy ve falsy

Truthy ve Falsy Tanımı

Python'da koşullu ifadelerde değerlendirilen nesneler ya 'Doğru (True)' ya da 'Yanlış (False)' olarak kabul edilir. Truthy, 'Doğru (True)' olarak değerlendirilen nesneleri ifade eder, falsy ise 'Yanlış (False)' olarak değerlendirilenleri belirtir. Bu değerlendirmeler genellikle if ifadeleri veya while döngüleri gibi koşullu dallanmalarda kullanılır. Ayrıca, bool() fonksiyonu herhangi bir nesneyi alır ve onun Boolean değerini döndürür.

Falsy (Yanlış olarak değerlendirilen nesneler)

Python’da, aşağıdaki nesneler yanlış (falsy) olarak kabul edilir:.

  • False

  • None

  • Sayısal sıfır değerleri

    • Örnek: 0, 0.0
  • Boş dizi tipleri (ör. boş listeler, demetler veya dizgiler gibi)

    • Örnek: [], (), ""
  • Boş sözlük

    • Örnek: {}
  • Boş küme

    • Örnek: set()

Bu nesneler, bir if ifadesindeki koşulda kullanıldığında 'falsy' olarak değerlendirilir. Örneğin, bu şekilde kod yazabilirsiniz.

1if not []:
2    print("The list is falsy.")
  • Bu kodda, liste [] boştur, bu nedenle falsy olarak değerlendirilir ve print ifadesi çalıştırılır.

Truthy (Doğru olarak değerlendirilen nesneler)

Yanlış (falsy) olarak kabul edilmeyen nesneler doğru (truthy) olarak değerlendirilir.

  • Sıfır olmayan sayılar (tam sayılar, ondalık sayılar)

    • Örnekler: 1, 3.14, -100
  • Boş olmayan diziler (listeler, demetler, string'ler vb.)

    • Örnekler: [1, 2, 3], (1, 2), "Merhaba"
  • Boş olmayan sözlükler

    • Örnek: {"anahtar": "değer"}
  • Boş olmayan kümeler

    • Örnek: {1, 2, 3}

Doğru (truthy) olarak kabul edilen nesneler, bir if koşulunda kullanıldığında 'True' olarak değerlendirilir. Örneğin, bu şekilde kod yazabilirsiniz.

1if [1, 2, 3]:
2    print("The list is truthy.")
  • Yukarıdaki kodda, [1, 2, 3] listesi boş olmadığından, doğru (truthy) olarak değerlendirilir ve print ifadesi çalıştırılır.

bool() fonksiyonu ile Boolean değeri değerlendirme

bool() fonksiyonunu kullanarak nesnelerin Boolean değerini değerlendirebilirsiniz.

 1# Examples of falsy values
 2print("False is", "truthy" if bool(False) else "falsy")
 3print("0 is", "truthy" if bool(0) else "falsy")
 4print('"" is', "truthy" if bool("") else "falsy")
 5print("None is", "truthy" if bool(None) else "falsy")
 6print("[] is", "truthy" if bool([]) else "falsy")
 7
 8# Examples of truthy values
 9print("1 is", "truthy" if bool(1) else "falsy")
10print('"hello" is', "truthy" if bool("hello") else "falsy")
11print('" " (space) is', "truthy" if bool(" ") else "falsy")
12print('"0" is', "truthy" if bool("0") else "falsy")
  • Bu kod, çeşitli değerlerin doğruluk değerinin nasıl değerlendirildiğini göstermektedir. Örneğin, sayısal değer 0 ve boş bir dize False olarak kabul edilirken, bir boşluk veya "0" dizesi True olarak kabul edilir.

truthy ve falsy Kullanımı

truthy ve falsy kavramlarını kullanarak kod daha öz ve sezgisel bir şekilde yazılabilir. Özellikle, if ifadeleri açık karşılaştırmalar olmadan sıkça değerlendirilebilir, böylelikle daha kısa hale gelir. Örneğin, aşağıdaki iki kod parçası benzer şekilde çalışır, ancak ilki daha kısadır.

1my_list = [1]
2
3# Explicit comparison
4if my_list != []:
5    print("The list is not empty.")
6
7# Using truthy/falsy
8if my_list:
9    print("The list is not empty.")

Yukarıdaki örnekte, my_list boş bir liste olmadığı sürece truthy olarak değerlendirildiğini görebilirsiniz, bu da açık karşılaştırmalara olan ihtiyacı ortadan kaldırır.

truthy ve falsy ile Tasarım

truthy ve falsy kavramlarını etkili bir şekilde kullanarak kod okunabilirliğini ve verimliliğini artırabilirsiniz. Bunlar özellikle varsayılan değerler belirlemek, değişken geçerliliğini kontrol etmek ve giriş doğrulaması için kullanışlıdır. Örneğin, argüman olarak None veya boş bir liste bekliyorsanız, bu şekilde kod yazabilirsiniz.

1def process_data(data=None):
2    data = data or []
3    print(data)
4
5process_data()  # An empty list is used by default.
  • Bu kodda, data değeri None ise, varsayılan değer olarak boş bir liste [] atanır. Bu şekilde, truthy ve falsy kullanımı varsayılan değerleri kısaca ayarlamanıza olanak tanır.

İstenmeyen davranışlardan kaçınmak için dikkat edilmesi gereken noktalar

Ancak, doğru (truthy) ve yanlış (falsy) değerleri kullanan kodlar kısa ve pratik olabilirken, istenmeyen davranışlara da yol açabileceğini unutmayın. Örneğin, bu kodda yalnızca data None olduğunda değil, aynı zamanda boş bir dize veya 0 gibi False olarak değerlendirilen herhangi bir değerde de, varsayılan olarak boş bir liste [] ile değiştirilecektir. Bu nedenle, değerin yalnızca None olduğu durumlarda başlatılması gibi daha sıkı bir koşul gerektiğinde, value is None: gibi açık bir koşul kullanılması önerilir. Duruma bağlı olarak, sadelik ve titizlik arasında bir dengeyle tasarım yapmak önemlidir.

1def process_data(data=None):
2    if data is None:
3        data = []
4    print(data)
5
6process_data()   # An empty list is used by default.
7process_data(0)  # 0 is printed because it's not None.
  • Bu kodda, data yalnızca None ise boş bir listeye atanır, diğer 0 gibi yanlış (falsy) değerler ise olduğu gibi bırakılır.

Özel nesnelerde Boolean değerini kontrol etme

Kendi oluşturduğunuz sınıflarda bile, __bool__() veya __len__() metodlarını tanımlayarak bir nesnenin Boolean değerini kontrol edebilirsiniz.

 1class MyContainer:
 2    def __init__(self, items):
 3        self.items = items
 4
 5    def __len__(self):
 6        return len(self.items)
 7
 8box = MyContainer([])
 9print(bool(box))  # False
10
11box.items.append("item")
12print(bool(box))  # True
  • Bu kodda, __len__() metodu, kapsayıcının boş olduğunda False, eleman içerdiğinde ise True olarak değerlendirilmesini sağlar.

Sonuç

Python'da truthy ve falsy kavramları, kısa koşullu ifadeler yazmak ve kodu daha sezgisel hale getirmek için çok önemlidir. Bunları anlamak ve doğru şekilde kullanmak, kodun okunabilirliğini ve verimliliğini büyük ölçüde artırabilir.

Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.

YouTube Video