Ana içeriğe geç
Modül 9 · Ders 1 ders 4Kurstaki 33/36~12 min
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

Python
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:

Python
risultato: int  # nessuna assegnazione, solo "annuncio del tipo"

Açıklama ekleme işlevleri

Python
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+)

Python
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:

Python
def trova_utente(id: int) -> str | None:
    if id == 1:
        return "Ada"
    return None

X | 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

Python
from typing import Any, Callable

def applica(f: Callable[[int], int], x: int) -> int:
    return f(x)

valore: Any = "qualunque cosa"  # disabilita il check
  • Any = "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:

Bash
$ 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

Egzersiz#python.m9.l1.e1
Denemeler: 0Yükleniyor…

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.

Düzenleyici yükleniyor…
İ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

Egzersiz#python.m9.l1.e2
Denemeler: 0Yükleniyor…

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

Düzenleyici yükleniyor…
İpucu göster

Liste boş DEĞİLSE "if items" doğrudur.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m9.l1.e3
Denemeler: 0Yükleniyor…

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)`.

Düzenleyici yükleniyor…
İpucu göster

Parametre olarak n: int'yi ve işlev imzasından sonra -> int'yi kullanın.

3 denemeden sonra çözüm mevcut