Python'daki Türler

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: metin
  • float: ondalık sayı
  • bool: mantıksal
  • List: liste
  • Dict: sözlük
  • Tuple: demet
  • Set: 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.

YouTube Video