Bu kod ne anlama geliyor?

Merhaba. Bir kodu incelerken fonksiyon tanımlandığında şunu gördüm:

tuple[int, int]

kodda şunun gibiydi:

def fonksiyon(a, b, c: tuple[int, int], d: list[int, int]=[0, 0]):
    pass

bir kod yazdım ve bir şey denedim

a = tuple[int, int]

print(a)

Sonuç:

tuple[int, int]

İlk başta belki liste veya tuple dır diye düşünüp a[0] yazmayı denedim ama

TypeError: There are no type variables left in tuple[int, int]

hatası aldım.

type ı kullanınca da <class 'types.GenericAlias'> sonucu geliyor. Bu tam olarak ne işe yarıyor? Nerelerde ve ne için kullanılıyor? Şimdiden teşekkürler.

1 Beğeni

O bir type hint. Ornegin tuple[int, int] iki tane elemani olan ve ikisi de int olan bir tuple’i ifade ediyor.

def foo(a: list[int, str], b: tuple[int, int]) -> list[int, int]:
    return [a[0], b[0]]

Bu fonksiyonun ornek kullanimi soyle olmali:

In [2]: foo([1, "a"], (2, 3))
Out[2]: [1, 2]

Elbette python strongly-typed bir dil olmadigi icin argumanlara farkli tipte degerler verilirse sorun olmaz, bunlar kodu okuyan kisiye kolaylik sagliyor ve kodu yazan kisiyi daha temiz kod yazmaya itiyor.

https://docs.python.org/3/library/types.html#types.GenericAlias

Bu arada o yazim da GenericAlias’in kolaylastirilmis haliymis:

dict[str, int] == GenericAlias(dict, (str, int))
4 Beğeni