মডিউল পাঠ (1/4)
টাইপ ইঙ্গিত: টীকা ধরনের
টাইপ ইঙ্গিত (টাইপ টীকা) হল ঐচ্ছিক ঘোষণা যা বলে "এই ভেরিয়েবল/প্যারামিটারের টাইপ X আছে"। পাইথন রানটাইমে তাদের যাচাই করে না: সেগুলি আপনার জন্য, আপনার সম্পাদক (স্বয়ংক্রিয়ভাবে!) এবং mypy বা এর মতো টুল পাইরাইট যা স্ট্যাটিক টাইপ-চেকিং করে।
পরিবর্তনশীল টীকা
nome: str = "Ada"
anni: int = 36
attivo: bool = True
prezzi: list[float] = [1.2, 3.4]সিনট্যাক্স হল name: type = value। একটি মান ছাড়া এটি একটি বিশুদ্ধ ঘোষণা:
risultato: int # nessuna assegnazione, solo "annuncio del tipo"টীকা ফাংশন
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+)
nomi: list[str] = ["a", "b"]
mappa: dict[str, int] = {"x": 1}
coppia: tuple[int, str] = (1, "ok")
unici: set[int] = {1, 2, 3}ঐচ্ছিক এবং ইউনিয়ন
একটি মান যা None হতে পারে:
def trova_utente(id: int) -> str | None:
if id == 1:
return "Ada"
return NoneX | None হল আধুনিক সিনট্যাক্স (Python 3.10+)। সমতুল্য: Optional[X] থেকে typing।
একাধিক ধরনের ইউনিয়নের জন্য: int | str | float।
টাইপিং: দরকারী টুল
from typing import Any, Callable
def applica(f: Callable[[int], int], x: int) -> int:
return f(x)
valore: Any = "qualunque cosa" # disabilita il checkAny= "চেক করবেন না" (সামান্য ব্যবহার করুন)।Callable[[arg1, arg2], return]= একটি ফাংশন যা সেই প্যারামিটারগুলি নেয় এবং সেই প্রকারটি প্রদান করে৷
mypy: টাইপ-চেকার
আপনি mypy ইনস্টল করেন, mypy file.py চালান, এবং এটি আপনাকে বলে যে প্রকারগুলি সারিবদ্ধ কিনা:
$ mypy script.py
script.py:5: error: Argument 1 to "somma" has incompatible type "str"; expected "int"মাইপি দিয়ে প্রকারগুলি পরীক্ষা করা হচ্ছে
দোভাষীর দ্বারা রানটাইমে পাইথনের প্রকার ইঙ্গিত প্রয়োগ করা হয় না; তারা মৃত্যুদন্ডের সময় উপেক্ষা করা হয়. টাইপ শুদ্ধতা যাচাই করতে, আপনার টার্মিনালে mypy script.py কমান্ডটি কার্যকর করার মাধ্যমে আপনাকে mypy এর মতো একটি বাহ্যিক স্ট্যাটিক বিশ্লেষণ টুল চালাতে হবে।
নিজে চেষ্টা করে দেখুন
একটি ফাংশন সংজ্ঞায়িত করুন `ডবল(সংখ্যা: তালিকা[int]) -> তালিকা[int]` যা 2 দ্বারা গুণিত প্রতিটি উপাদানের সাথে একটি তালিকা প্রদান করে। এটিকে [1, 2, 3] দিয়ে কল করুন এবং `r` এ বরাদ্দ করুন। `r` মূল্যায়ন করুন।
ইঙ্গিত দেখান
একটি তালিকা বোঝা বা লুপের জন্য একটি ব্যবহার করুন।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
ব্যায়াম পর্যালোচনা করুন
`first_or_none(আইটেম: তালিকা[int]) -> int | সংজ্ঞায়িত করুন None` যা প্রথম উপাদান প্রদান করে যদি তালিকাটি খালি না থাকে, অন্যথায় None। `a = first_or_none([10, 20])` এবং `b = first_or_none([])` বরাদ্দ করুন। `(a, b)` মূল্যায়ন করুন।
ইঙ্গিত দেখান
তালিকা খালি না থাকলে `যদি আইটেম` সত্য হয়।
সমাধান 3 প্রচেষ্টার পরে উপলব্ধ
অতিরিক্ত চ্যালেঞ্জ
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 প্রচেষ্টার পরে উপলব্ধ