Gelişmiş Python Tipleri¶
🌐 Yapay Zekâ ve İnsanlar Tarafından Çeviri
Bu çeviri, insanlar tarafından yönlendirilen bir yapay zekâ ile oluşturuldu. 🤝
Orijinal anlamın yanlış anlaşılması ya da kulağa doğal gelmeme gibi hatalar içerebilir. 🤖
Yapay zekâ LLM'ini daha iyi yönlendirmemize yardımcı olarak bu çeviriyi iyileştirebilirsiniz.
Python tipleriyle çalışırken işinize yarayabilecek bazı ek fikirler.
Union veya Optional Kullanımı¶
Kodunuz herhangi bir nedenle | kullanamıyorsa — örneğin bir tip açıklamasında (type annotation) değil de response_model= gibi bir yerdeyse — dikey çizgi (|) yerine typing içindeki Union'ı kullanabilirsiniz.
Örneğin, bir şeyin str ya da None olabileceğini şöyle belirtebilirsiniz:
from typing import Union
def say_hi(name: Union[str, None]):
print(f"Hi {name}!")
typing, bir şeyin None olabileceğini belirtmek için Optional ile bir kısayol da sunar.
Benim oldukça öznel bakış açıma göre küçük bir ipucu:
- 🚨
Optional[SomeType]kullanmaktan kaçının - Bunun yerine ✨
Union[SomeType, None]kullanın ✨.
İkisi de eşdeğer ve temelde aynıdır; ancak "optional" kelimesi değerin isteğe bağlı olduğunu ima eder. Oysa aslında " None olabilir" demektir; değer isteğe bağlı olmasa ve hâlâ zorunlu olsa bile.
Bence Union[SomeType, None] ne demek istediğini daha açık anlatır.
Burada mesele sadece kelimeler ve isimler. Ancak bu kelimeler sizin ve ekip arkadaşlarınızın koda bakışını etkileyebilir.
Örnek olarak şu fonksiyona bakalım:
from typing import Optional
def say_hi(name: Optional[str]):
print(f"Hey {name}!")
name parametresi Optional[str] olarak tanımlıdır; ancak isteğe bağlı değildir, parametre olmadan fonksiyonu çağıramazsınız:
say_hi() # Ah hayır, bu hata fırlatır! 😱
name parametresi varsayılan bir değeri olmadığı için hâlâ zorunludur (yani optional değildir). Yine de name, değer olarak None kabul eder:
say_hi(name=None) # Bu çalışır, None geçerlidir 🎉
İyi haber şu ki, çoğu durumda tip birliklerini (union) tanımlamak için doğrudan | kullanabilirsiniz:
def say_hi(name: str | None):
print(f"Hey {name}!")
Dolayısıyla, normalde Optional ve Union gibi isimler için endişelenmenize gerek yok. 😎