Optional ve Union
- Python kursu
- İleri seviye
- Ders 8/83
- 5 dk
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
# 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
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
from typing import ____
def find(id: int) -> Optional[str]:
return None
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.