मुख्य सामग्री पर जाएं
मॉड्यूल 9 · पाठ 1 का 4पाठ्यक्रम में 33/36~12 min
मॉड्यूल पाठ (1/4)

संकेत टाइप करें: एनोटेटिंग प्रकार

प्रकार संकेत (प्रकार एनोटेशन) वैकल्पिक घोषणाएँ हैं जो कहती हैं "इस वेरिएबल/पैरामीटर का प्रकार X है"। पायथन उन्हें रनटाइम पर सत्यापित नहीं करता है: वे आपके, आपके संपादक (स्वतः पूर्ण!) और mypy या जैसे टूल के लिए हैं पाइराइट जो स्थैतिक प्रकार की जाँच करता है।

चरों की व्याख्या करना

Python
nome: str = "Ada"
anni: int = 36
attivo: bool = True
prezzi: list[float] = [1.2, 3.4]

सिंटैक्स name: type = value है। मूल्य के बिना यह एक शुद्ध घोषणा है:

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

व्याख्यात्मक कार्य

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)

सिंटैक्स: प्रत्येक पैरामीटर के लिए param: type, रिटर्न के लिए -> type। एक फ़ंक्शन जो कुछ भी नहीं लौटाता वह -> None का उपयोग करता है।

अंतर्निहित सामान्य प्रकार (पायथन 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}

वैकल्पिक और संघ

एक मान जो None हो सकता है:

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

X | None आधुनिक सिंटैक्स है (पायथन 3.10+)। समतुल्य: Optional[X] typing से। अनेक प्रकार की यूनियनों के लिए: int | str | float।

टाइपिंग: उपयोगी उपकरण

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 = "चेक न करें" (संयम से उपयोग करें)।
  • Callable[[arg1, arg2], return] = एक फ़ंक्शन जो उन मापदंडों को लेता है और उस प्रकार को लौटाता है।

mypy: टाइप-चेकर

आप mypy इंस्टॉल करते हैं, mypy file.py चलाते हैं, और यह आपको बताता है कि क्या प्रकार पंक्तिबद्ध हैं:

Bash
$ mypy script.py
script.py:5: error: Argument 1 to "somma" has incompatible type "str"; expected "int"

Mypy के साथ प्रकारों की जाँच करना

पायथन के प्रकार के संकेत दुभाषिया द्वारा रनटाइम पर लागू नहीं किए जाते हैं; निष्पादन के दौरान उन्हें नजरअंदाज कर दिया जाता है। प्रकार की शुद्धता को सत्यापित करने के लिए, आपको अपने टर्मिनल में mypy script.py कमांड निष्पादित करके mypy जैसा बाहरी स्थैतिक विश्लेषण उपकरण चलाना होगा।

खुद कोशिश करना

व्यायाम#python.m9.l1.e1
प्रयास: 0लोड हो रहा है...

एक फ़ंक्शन `double(numbers: list[int]) -> list[int]` को परिभाषित करें जो प्रत्येक तत्व को 2 से गुणा करके एक सूची लौटाता है। इसे [1, 2, 3] के साथ कॉल करें और `r` को असाइन करें। `r` का मूल्यांकन करें.

संपादक लोड हो रहा है...
संकेत दिखाएँ

सूची समझ या फॉर लूप का उपयोग करें।

3 प्रयासों के बाद समाधान उपलब्ध है

व्यायाम की समीक्षा करें

व्यायाम#python.m9.l1.e2
प्रयास: 0लोड हो रहा है...

`first_or_none(आइटम: सूची[int]) -> int | को परिभाषित करें None` जो सूची गैर-रिक्त होने पर पहला तत्व लौटाता है, अन्यथा कोई नहीं। `a =first_or_none([10, 20])` और `b =first_or_none([])` असाइन करें। `(ए, बी)` का मूल्यांकन करें।

संपादक लोड हो रहा है...
संकेत दिखाएँ

जब सूची खाली न हो तो `यदि आइटम` सत्य है।

3 प्रयासों के बाद समाधान उपलब्ध है

अतिरिक्त चुनौती

व्यायाम#python.m9.l1.e3
प्रयास: 0लोड हो रहा है...

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

संपादक लोड हो रहा है...
संकेत दिखाएँ

पैरामीटर के रूप में n: int और फ़ंक्शन हस्ताक्षर के बाद -> int का उपयोग करें।

3 प्रयासों के बाद समाधान उपलब्ध है