পাইথনে টাইপস
এই প্রবন্ধে পাইথনে টাইপস সম্পর্কে ব্যাখ্যা করা হয়েছে।
YouTube Video
পাইথনে টাইপস
পাইথনের typing
মডিউল টাইপ হিন্টস পরিচয় করানোর জন্য ব্যবহৃত হয়। এটি মূলত পাইথন ৩.৫-এ পরিচিতি লাভ করে এবং কোডের পঠনযোগ্যতা ও রক্ষণযোগ্যতা বাড়ানোর জন্য ব্যবহৃত হয়। টাইপ হিন্টস কোডের রানটাইমে প্রভাব ফেলে না তবে IDEs এবং স্ট্যাটিক বিশ্লেষণ টুল দ্বারা টাইপ চেক করা সম্ভব করে তোলে।
টাইপ হিন্টসের প্রাথমিক জ্ঞান
টাইপ হিন্টস ফাংশন এবং ভেরিয়েবলের টাইপগুলি স্পষ্টভাবে উল্লেখ করে কোডটির উদ্দেশ্য স্পষ্ট করে। নিচের উদাহরণে, আর্গুমেন্ট এবং রিটার্ন ভ্যালুর জন্য টাইপগুলি নির্ধারিত রয়েছে।
1def add_numbers(a: int, b: int) -> int:
2 return a + b
3
4result: int = add_numbers(5, 10)
5print(result) # 15
উপরের কোডে, a
এবং b
ইন্টিজার টাইপের (int
), এবং ফাংশনের রিটার্ন ভ্যালুও স্পষ্টভাবে ইন্টিজার হিসাবে বর্ণিত। টাইপ হিন্টস থাকা সত্ত্বেও, টাইপ কড়াকড়িভাবে প্রয়োগ করা হয় না, তবে টাইপের অমিল হলে ডেভেলপমেন্টের সময় সতর্কতা দেখানো হতে পারে।
গুরুত্বপূর্ণ টাইপ হিন্টস
পাইথনের typing
মডিউল টাইপ হিন্টস সংজ্ঞায়িত করার জন্য বিভিন্ন ক্লাস এবং ফাংশন সরবরাহ করে। সাধারণ টাইপ হিন্টসের একটি তালিকা নিচে দেওয়া হল।
int
: পূর্ণসংখ্যাstr
: স্ট্রিংfloat
: ভাসমান-বিন্দু সংখ্যাbool
: বুলিয়ানList
: তালিকাDict
: অভিধানTuple
: টিউপলSet
: সেট
List
টাইপ
লিস্ট টাইপ List
ক্লাস ব্যবহার করে নির্ধারণ করা হয়। আপনি লিস্টের মধ্যে থাকা উপাদানগুলোর টাইপ স্পষ্টভাবে নির্ধারণ করতে পারেন।
1from typing import List
2
3def sum_list(numbers: List[int]) -> int:
4 return sum(numbers)
5
6print(sum_list([1, 2, 3])) # 6
এই উদাহরণে, লিস্টের সব উপাদান int
টাইপের হওয়া প্রত্যাশিত।
Dict
টাইপ
ডিকশনারি টাইপ Dict
ব্যবহার করে নির্ধারণ করা হয়। কী এবং মানের টাইপ নির্ধারণ করা যায়।
1from typing import Dict
2
3def get_student_age(students: Dict[str, int], name: str) -> int:
4 return students.get(name, 0)
5
6students = {"Alice": 23, "Bob": 19}
7print(get_student_age(students, "Alice")) # 23
এই উদাহরণে, ডিকশনারি str
কে কী টাইপ এবং int
কে মান টাইপ হিসেবে ব্যবহার করে।
Tuple
টাইপ
টুপল Tuple
টাইপ ব্যবহার করে নির্ধারণ করা হয়। আপনি টুপলের প্রতিটি উপাদানের টাইপ আলাদা করে নির্ধারণ করতে পারেন।
1from typing import Tuple
2
3def get_person() -> Tuple[str, int]:
4 return "Alice", 30
5
6name, age = get_person()
7print(name, age) # Alice 30
এখানে, get_person
ফাংশন একটি টুপল ফেরত দিচ্ছে যা একটি স্ট্রিং এবং একটি পূর্ণসংখ্যা ধারণ করে।
Union
টাইপ
Union
টাইপ ব্যবহার করে স্পষ্টভাবে নির্দেশ করা হয় যে একাধিক টাইপ গ্রহণযোগ্য।
1from typing import Union
2
3def process_value(value: Union[int, float]) -> float:
4 return value * 2.0
5
6print(process_value(10)) # 20.0
7print(process_value(3.5)) # 7.0
এই উদাহরণে, process_value
ফাংশন int
অথবা float
আর্গুমেন্ট হিসাবে গ্রহণ করে এবং float
টাইপের মান ফেরত দেয়।
Optional
টাইপ
Optional
টাইপ ব্যবহার করা হয় যখন একটি ভ্যারিয়েবল None
হতে পারে। এটি Union[Type, None]
এর সংক্ষিপ্ত রূপ হিসেবে ব্যবহৃত হয়।
1from typing import Optional
2
3def greet(name: Optional[str] = None) -> str:
4 if name is None:
5 return "Hello, Guest!"
6 return f"Hello, {name}!"
7
8print(greet()) # Hello, Guest!
9print(greet("Alice")) # Hello, Alice!
এখানে, এটি দেখায় যে যখন name
নির্ধারণ করা হয় না, তখন এটি None
হিসাবে গণ্য হয়।
জেনেরিক টাইপস
জেনেরিক টাইপস হল একটি ডেটা স্ট্রাকচারে থাকা উপাদানের টাইপ বিমূর্তভাবে উপস্থাপনের একটি উপায়। typing
মডিউলে, আপনি TypeVar
ব্যবহার করে জেনেরিক টাইপস নির্ধারণ করতে পারেন।
1from typing import TypeVar, List
2
3T = TypeVar('T')
4
5def get_first_element(elements: List[T]) -> T:
6 return elements[0]
7
8print(get_first_element([1, 2, 3])) # 1
9print(get_first_element(["a", "b", "c"])) # a
এই উদাহরণে, get_first_element
একটি ফাংশন যা একটি লিস্টের প্রথম উপাদানটি ফেরত দেয় এবং এটি লিস্টের টাইপ নির্বিশেষে কাজ করে।
টাইপ অ্যালিয়াস
টাইপ অ্যালিয়াস হল জটিল টাইপ ডেফিনিশন সহজ করার জন্য তাদের একটি স্পষ্ট নাম দেওয়ার একটি উপায়।
1from typing import List, Tuple
2
3Coordinates = List[Tuple[int, int]]
4
5def get_coordinates() -> Coordinates:
6 return [(0, 0), (1, 1), (2, 2)]
7
8print(get_coordinates()) # [(0, 0), (1, 1), (2, 2)]
এই উদাহরণে, একটি টাইপ অ্যালিয়াস Coordinates
নির্ধারণ করা হয়েছে যা একটি লিস্টের মধ্যে টুপল ধারণ করে এমন টাইপকে সহজভাবে উপস্থাপন করে।
সারসংক্ষেপ
পাইথনের typing
মডিউল কোডের পাঠযোগ্যতা এবং পরিচর্যা ক্ষমতা উন্নত করতে অত্যন্ত কার্যকর। সঠিকভাবে টাইপ হিন্ট ব্যবহার করে, আপনি টাইপ মিসম্যাচ এবং বাগ প্রতিরোধে সহায়তা করতে পারেন, বিশেষ করে বৃহৎ-পরিসরের প্রকল্প বা দলগত উন্নয়নে। টাইপগুলো কেবল একটি উন্নয়ন সহায়ক টুল এবং রানটাইম প্রবৃত্তিতে প্রভাব ফেলে না, ফলে কোডের নমনীয়তা বজায় থাকে।
আপনি আমাদের ইউটিউব চ্যানেলে ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করে উপরের নিবন্ধটি অনুসরণ করতে পারেন। দয়া করে ইউটিউব চ্যানেলটিও দেখুন।