Python for AI/Functions, Modules ও Packages/Lesson 19
Modules ও import
অন্যের লেখা code ব্যবহার করা — import-এর তিন রূপ, standard library-র দরকারি module (math, random, statistics, collections, datetime), আর __name__ == "__main__"।
- সময়
- 22 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
Module হলো Python code-এর একটা file — যেটার ভেতরের function, variable অন্য জায়গা থেকে import করে ব্যবহার করা যায়।
Python-এর সাথে বিনামূল্যে আসে শত শত module — একে বলে standard library। "Batteries included" — Python-এর বিখ্যাত slogan।
কেন দরকার?
প্রতিটা জিনিস নিজে লিখতে হলে কখনো ML পর্যন্ত পৌঁছানো যেত না। Standard deviation, random number, তারিখের হিসাব — এগুলো বহু বছর ধরে test করা code হিসেবে তৈরি আছে।
আর ML-এর পুরো দুনিয়াটাই import দিয়ে শুরু হয়:
import numpy as np
import pandas as pd
import torch
from sklearn.linear_model import LinearRegression
আজ import কীভাবে কাজ করে সেটা ভালো করে বুঝবো।
import-এর তিন রূপ
| লেখা | ব্যবহার | কখন |
|---|---|---|
import math | math.sqrt() | Default — কোথা থেকে এল স্পষ্ট বোঝা যায় |
from math import sqrt | sqrt() | বারবার একটা-দুটো জিনিস লাগলে |
import numpy as np | np.array() | লম্বা নাম, বা convention থাকলে |
from math import *(সব import) এড়িয়ে চলো — কোন নাম কোথা থেকে এল বোঝা যায় না, আর তোমার নিজের variable-এর নাম চুপচাপ ঢাকা পড়তে পারে।
Standard library-র দরকারি module
random
random.seed(42) দিলে প্রতিবার একই "random" ফলাফল আসে — ML experiment reproducible রাখতে এটা অপরিহার্য। অনেক ML paper-এর code-এ দেখবে seed = 42।
statistics
collections
defaultdict(list) — না থাকা key চাইলে নিজে থেকেই খালি list বানিয়ে দেয়। if key not in d: d[key] = [] লেখার ঝামেলা নেই।
datetime
নিজের module আর __name__
তোমার প্রতিটা .py file নিজেই একটা module। ধরো utils.py:
# utils.py
def clean(text):
return text.strip().lower()
if __name__ == "__main__":
print(clean(" TEST "))
অন্য file থেকে:
# main.py
from utils import clean
print(clean(" Hello "))
if __name__ == "__main__": block শুধু তখন চলে যখন utils.py সরাসরি চালানো হয় (python utils.py)। main.py থেকে import করলে চলে না। তাই test বা demo code এখানে রাখা হয়।
এখানে সরাসরি চালাচ্ছো, তাই __main__ দেখাচ্ছে।
Exercise
Exercise
Dataset-এর পরিসংখ্যান
statistics module ব্যবহার করে ages থেকে বের করো:
mean_age— গড়median_age— মধ্যমাstd_age— standard deviation (stdev), 2 ঘর দশমিকে round
নিজে হিসাব না করে module-এর function ব্যবহার করো।
Quiz
Challenge
Challenge
সবচেয়ে বেশি আসা শব্দ
top_words(text, n) function লেখো যেটা text-এ সবচেয়ে বেশিবার আসা nটা শব্দ return করে — (শব্দ, সংখ্যা) tuple-এর list হিসেবে, বেশি থেকে কম।
- শব্দ গোনার আগে সব ছোট হাতের অক্ষরে আনো
collectionsmodule-এরCounterব্যবহার করো
বাস্তবে কোথায় ব্যবহার হয়?
একটা ML project-এর শুরুতে প্রায় সবসময় এরকম কিছু থাকে — reproducibility-র জন্য seed ঠিক করা আর data shuffle করে ভাগ করা:
Counter দিয়ে দেখছি দুই ভাগে class-এর অনুপাত মোটামুটি সমান আছে কিনা — না থাকলে model-এর evaluation বিশ্বাসযোগ্য হবে না। (scikit-learn-এ এর জন্য stratify option আছে।)
Interview প্রশ্ন
- Beginner:
import xআরfrom x import y-এর পার্থক্য কী? - Intermediate:
if __name__ == "__main__":কেন ব্যবহার করা হয়? - Advanced: Python একই module দুবার import করলে কি code দুবার চলে? (
sys.modulescache)। Circular import কী আর কীভাবে এড়াবে?
এরপর কী?
Standard library শক্তিশালী, কিন্তু NumPy, Pandas, PyTorch Python-এর সাথে আসে না — এগুলো install করতে হয়। পরের lesson: Packages ও pip।