Python'daki Türler
Bu makale Python'daki türleri açıklar.
YouTube Video
Python'daki Türler
Python'daki typing
modülü, Python'a tür ipuçları eklemek için kullanılır. İlk olarak Python 3.5'te tanıtıldı ve kodun okunabilirliğini ve sürdürülebilirliğini artırmak için kullanılır. Tür ipuçları, kodun çalışma zamanını etkilemez ancak IDE'ler ve statik analiz araçlarıyla tür kontrolüne olanak tanır.
Tür İpuçlarının Temelleri
Tür ipuçları, işlevlerin ve değişkenlerin türlerini açıkça belirterek kodun amacını netleştirir. Aşağıdaki örnekte, parametrelerin ve dönüş değerinin türleri belirtilmiştir.
1def add_numbers(a: int, b: int) -> int:
2 return a + b
3
4result: int = add_numbers(5, 10)
5print(result) # 15
Yukarıdaki kodda a
ve b
tamsayı türündedir (int
), ayrıca işlevin dönüş değeri de açık bir şekilde tamsayı olarak belirtilmiştir. Tür ipuçlarına rağmen, türler sıkı bir şekilde uygulanmaz, ancak tür uyuşmazlıkları varsa geliştirme sırasında uyarılar görüntülenebilir.
Temel Tür İpuçları
Python'daki typing
modülü, tür ipuçlarını tanımlamak için çeşitli sınıflar ve işlevler sağlar. Aşağıda yaygın tür ipuçlarının bir listesi bulunmaktadır.
int
: tamsayıstr
: metinfloat
: ondalık sayıbool
: mantıksalList
: listeDict
: sözlükTuple
: demetSet
: küme
List
türü
List
sınıfı kullanılarak liste türü belirtilir. Bir listedeki elemanların türünü açıkça belirtebilirsiniz.
1from typing import List
2
3def sum_list(numbers: List[int]) -> int:
4 return sum(numbers)
5
6print(sum_list([1, 2, 3])) # 6
Bu örnekte, listenin tüm elemanlarının int
türünde olması beklenir.
Dict
Türü
Sözlük türü Dict
kullanılarak tanımlanır. Anahtarların ve değerlerin türleri belirtilebilir.
1from typing import Dict
2
3def get_student_age(students: Dict[str, int], name: str) -> int:
4 return students.get(name, 0)
5
6students = {"Alice": 23, "Bob": 19}
7print(get_student_age(students, "Alice")) # 23
Bu örnekte, sözlük str
türünde anahtar ve int
türünde değer kullanır.
Tuple
Türü
Tuple türü Tuple
kullanılarak belirtilir. Bir tuple'daki her bir elemanın türünü ayrı ayrı belirtebilirsiniz.
1from typing import Tuple
2
3def get_person() -> Tuple[str, int]:
4 return "Alice", 30
5
6name, age = get_person()
7print(name, age) # Alice 30
Burada, get_person
fonksiyonunun bir string ve bir tam sayı içeren bir tuple döndürdüğü gösterilmektedir.
Union
Türü
Union
türü, birden fazla türün kabul edilebilir olduğunu açıkça belirtmek için kullanılır.
1from typing import Union
2
3def process_value(value: Union[int, float]) -> float:
4 return value * 2.0
5
6print(process_value(10)) # 20.0
7print(process_value(3.5)) # 7.0
Bu örnekte, process_value
fonksiyonu bir int
veya float
argümanını kabul eder ve float
türünde bir sonuç döndürür.
Optional
Türü
Optional
türü, bir değişkenin None
olabileceği durumlarda kullanılır. Bu, Union[Type, None]
için bir kısayol olarak sağlanmıştır.
1from typing import Optional
2
3def greet(name: Optional[str] = None) -> str:
4 if name is None:
5 return "Hello, Guest!"
6 return f"Hello, {name}!"
7
8print(greet()) # Hello, Guest!
9print(greet("Alice")) # Hello, Alice!
Burada, name
belirtilmediğinde None
olarak kabul edildiği gösterilmektedir.
Genel Türler
Genel türler, bir veri yapısının hangi türde elemanlar içerdiğini soyut olarak temsil etmenin bir yoludur. typing
modülünde, TypeVar
kullanarak genel türler tanımlayabilirsiniz.
1from typing import TypeVar, List
2
3T = TypeVar('T')
4
5def get_first_element(elements: List[T]) -> T:
6 return elements[0]
7
8print(get_first_element([1, 2, 3])) # 1
9print(get_first_element(["a", "b", "c"])) # a
Bu örnekte, get_first_element
bir listenin ilk elemanını döndüren bir fonksiyondur ve listenin türünden bağımsız olarak çalışır.
Tür Takma Adları
Tür takma adı, karmaşık tür tanımlarına net bir isim vererek bunları basitleştirmenin bir yoludur.
1from typing import List, Tuple
2
3Coordinates = List[Tuple[int, int]]
4
5def get_coordinates() -> Coordinates:
6 return [(0, 0), (1, 1), (2, 2)]
7
8print(get_coordinates()) # [(0, 0), (1, 1), (2, 2)]
Bu örnekte, bir tür takma adı olan Coordinates
tanımlanmıştır ve bir listesinin içinde tuple içeren bir türü temsil eder.
Özet
Python'daki typing
modülü, kodun okunabilirliğini ve sürdürülebilirliğini artırmak için çok kullanışlıdır. Tür ipuçlarını doğru şekilde kullanarak, özellikle büyük ölçekli projelerde veya ekip geliştirmelerinde, tür uyumsuzluklarını ve hataları önlemeye yardımcı olabilirsiniz. Türler yalnızca bir geliştirme destek aracıdır ve çalışma zamanı davranışını etkilemez, dolayısıyla kod esnekliğini korur.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.