Modül dersleri (1/4)
Yazım ipuçları: açıklama ekleme türleri
Tür ipuçları (tür açıklamaları), şunu söyleyen isteğe bağlı bildirimlerdir "bu değişken/parametre X tipine sahip". Python bunları çalışma zamanında doğrulamaz: bunlar sizin, editörünüz (otomatik tamamlama!) ve mypy veya gibi araçlar içindir pyright statik tür kontrolü gerçekleştirir.
Değişkenlere açıklama ekleme
nome: str = "Ada"
anni: int = 36
attivo: bool = True
prezzi: list[float] = [1.2, 3.4]Sözdizimi name: type = value şeklindedir. Değer olmadan bu saf bir bildirimdir:
risultato: int # nessuna assegnazione, solo "annuncio del tipo"Açıklama ekleme işlevleri
def saluta(nome: str, urlante: bool = False) -> str:
s = f"Ciao {nome}"
return s.upper() if urlante else s
def somma(numeri: list[int]) -> int:
return sum(numeri)Sözdizimi: Her parametre için param: type, dönüş için -> type.
Hiçbir şey döndürmeyen bir işlev -> None kullanır.
Yerleşik genel türler (Python 3.9+)
nomi: list[str] = ["a", "b"]
mappa: dict[str, int] = {"x": 1}
coppia: tuple[int, str] = (1, "ok")
unici: set[int] = {1, 2, 3}İsteğe bağlı ve Birlik
None olabilecek bir değer:
def trova_utente(id: int) -> str | None:
if id == 1:
return "Ada"
return NoneX | None modern sözdizimidir (Python 3.10+). Eşdeğeri: typing'den Optional[X].
Birden çok türden birleşimler için: int | str | float.
yazma: yararlı araçlar
from typing import Any, Callable
def applica(f: Callable[[int], int], x: int) -> int:
return f(x)
valore: Any = "qualunque cosa" # disabilita il checkAny= "kontrol etme" (tedbirli kullanın).Callable[[arg1, arg2], return]= bu parametreleri alan ve bu türü döndüren bir işlev.
mypy: tip denetleyici
mypy yüklersiniz, mypy file.py komutunu çalıştırırsınız ve bu size türlerin sıralanıp sıralanmadığını söyler:
$ mypy script.py
script.py:5: error: Argument 1 to "somma" has incompatible type "str"; expected "int"Mypy ile türleri kontrol etme
Python'un tür ipuçları çalışma zamanında yorumlayıcı tarafından uygulanmaz; yürütme sırasında göz ardı edilirler. Tip doğruluğunu doğrulamak için, terminalinizde mypy script.py komutunu çalıştırarak mypy gibi bir harici statik analiz aracı çalıştırmalısınız.
Kendin dene
Her öğenin 2 ile çarpıldığı bir liste döndüren bir 'double(numbers: list[int]) -> list[int]' işlevi tanımlayın. Bunu [1, 2, 3] ile çağırın ve 'r'ye atayın. 'r'yi değerlendirin.
İpucu göster
Bir liste kavrama veya for döngüsü kullanın.
3 denemeden sonra çözüm mevcut
Alıştırmayı gözden geçirin
'first_or_none(items: list[int])'i tanımlayın -> int | Liste boş değilse ilk öğeyi döndüren Yok`, aksi takdirde Yok. 'a = ilk_veya_none([10, 20])' ve 'b = ilk_veya_none([])' atayın. '(a, b)'yi değerlendirin.
İpucu göster
Liste boş DEĞİLSE "if items" doğrudur.
3 denemeden sonra çözüm mevcut
Ek zorluk
Write a function `double_value(n: int) -> int` that takes an integer, multiplies it by 2, and returns the result. Make sure to specify type hints for both the parameter and the return value. Finally, evaluate `double_value(5)`.
İpucu göster
Parametre olarak n: int'yi ve işlev imzasından sonra -> int'yi kullanın.
3 denemeden sonra çözüm mevcut