মূল কন্টেন্টে যান
মডিউল 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 ব্যবহার করে।

অন্তর্নির্মিত জেনেরিক প্রকার (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}

ঐচ্ছিক এবং ইউনিয়ন

একটি মান যা None হতে পারে:

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

X | None হল আধুনিক সিনট্যাক্স (Python 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 script.py কমান্ডটি কার্যকর করার মাধ্যমে আপনাকে mypy এর মতো একটি বাহ্যিক স্ট্যাটিক বিশ্লেষণ টুল চালাতে হবে।

নিজে চেষ্টা করে দেখুন

ব্যায়াম#python.m9.l1.e1
প্রচেষ্টা: 0লোড হচ্ছে...

একটি ফাংশন সংজ্ঞায়িত করুন `ডবল(সংখ্যা: তালিকা[int]) -> তালিকা[int]` যা 2 দ্বারা গুণিত প্রতিটি উপাদানের সাথে একটি তালিকা প্রদান করে। এটিকে [1, 2, 3] দিয়ে কল করুন এবং `r` এ বরাদ্দ করুন। `r` মূল্যায়ন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

একটি তালিকা বোঝা বা লুপের জন্য একটি ব্যবহার করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম পর্যালোচনা করুন

ব্যায়াম#python.m9.l1.e2
প্রচেষ্টা: 0লোড হচ্ছে...

`first_or_none(আইটেম: তালিকা[int]) -> int | সংজ্ঞায়িত করুন None` যা প্রথম উপাদান প্রদান করে যদি তালিকাটি খালি না থাকে, অন্যথায় None। `a = first_or_none([10, 20])` এবং `b = first_or_none([])` বরাদ্দ করুন। `(a, b)` মূল্যায়ন করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

তালিকা খালি না থাকলে `যদি আইটেম` সত্য হয়।

সমাধান 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 প্রচেষ্টার পরে উপলব্ধ