Ana içeriğe geç

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.

İngilizce sürüm

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. 😎