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
- Örnek:
-
Boş dizi tipleri (ör. boş listeler, demetler veya dizgiler gibi)
- Örnek:
[]
,()
,""
- Örnek:
-
Boş sözlük
- Örnek:
{}
- Örnek:
-
Boş küme
- Örnek:
set()
- Örnek:
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 nedenlefalsy
olarak değerlendirilir veprint
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
- Örnekler:
-
Boş olmayan diziler (listeler, demetler, string'ler vb.)
- Örnekler:
[1, 2, 3]
,(1, 2)
,"Merhaba"
- Örnekler:
-
Boş olmayan sözlükler
- Örnek:
{"anahtar": "değer"}
- Örnek:
-
Boş olmayan kümeler
- Örnek:
{1, 2, 3}
- Örnek:
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 veprint
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 dizeFalse
olarak kabul edilirken, bir boşluk veya"0"
dizesiTrue
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ğeriNone
ise, varsayılan değer olarak boş bir liste[]
atanır. Bu şekilde,truthy
vefalsy
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ızcaNone
ise boş bir listeye atanır, diğer0
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ğundaFalse
, eleman içerdiğinde iseTrue
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.