CodeBlanks Logo Icon CodeBlanks

Optional ve Union

Optional ve Union ile opsiyonel türleri öğrenirsin.

Optional ve Union

Bazen bir değer ya belirli bir türdür ya da None olur. Optional bunu bildirir: Optional[int] ya int ya da None demektir.

İki farklı türden biri gerekirse Union kullanırsın: Union[int, str] ya tamsayı ya dize kabul eder.

from typing import Optional, Union

def find(id: int) -> Optional[str]:
    if id == 1:
        return "Ayşe"
    return None

def parse(value: Union[int, str]) -> int:
    return int(value)

Python 3.10+ sürümlerinde int | str ve int | None kısa yazımı da geçerlidir; bu derste typing modülünü kullanıyoruz.

None güvenliği ve varsayılan

Optional[int] döndüren bir fonksiyondan gelen değeri kullanmadan önce None kontrolü yapmalısın. Aksi hâlde None.upper() gibi çağrılar hata fırlatır.

Örnek: name = find(2) None dönebilir. if name is not None: ile koruma altına al; değilse varsayılan bir dize kullan.

Union ile birden çok türü sıralayabilirsin; sıra önemli değildir ama okunabilirlik için mantıklı bir sıra seç.

Uygulama Optional dönen find fonksiyonu

find(id: int) -> Optional[str] fonksiyonunu yaz. id == 1 ise "Ayşe" döndürsün; değilse None. typing modülünden Optional içe aktar. print(find(1)) ve print(find(2)) çağrılarını yap.

Başlangıç kodu

main.py
# typing modülünden Optional içe aktar
# find(id) -> Optional[str]: id 1 ise "Ayşe", değilse None
# find(1) ve find(2) çağrılarının sonucunu yazdır

Örnek çözüm

main.py
from typing import Optional

def find(id: int) -> Optional[str]:
    if id == 1:
        return "Ayşe"
    return None

print(find(1))
print(find(2))

Beklenen çıktı

Ayşe
None

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Optional import et

Soru
from typing import ____

def find(id: int) -> Optional[str]:
    return None
Cevap
from typing import Optional

def find(id: int) -> Optional[str]:
    return None

Açıklama: Optional, typing modülünden gelir; None olasılığını bildirir.

2 Optional ve Union kullanımlarını eşleştir

Kavram Anlamı
Optional[int] int veya None
Union[int, str] int veya str
int | str Kısa yazım (3.10+)
if v is not None None kontrolü

3 Optional[str] ile hangi değer GEÇERLİDİR?

  • Yalnızca dize
  • Yalnızca None
  • Herhangi bir tür
  • Dize veya None Doğru cevap

Açıklama: Optional[str], str ya da None kabul eder; ikisi de geçerlidir.

İleri seviye bölümündeki tüm dersler