Lesson ১৩৬ মিনিট পড়া

মডিউল এবং ইমপোর্ট (Modules & Imports)

অন্যের তৈরি করা কোড ব্যবহার করে নিজের কাজ সহজ করুন

মডিউল কী? (What Are Modules?)

একটি মডিউল মূলত একটি পাইথন ফাইল, যেটিতে এমন কোড থাকে যা আপনি বারবার ব্যবহার করতে পারেন। এটিকে একটি টুলবক্সের (toolbox) মতো চিন্তা করুন। প্রতিবার শুরু থেকে হাতুড়ি বানানোর বদলে, আপনি শুধু টুলবক্স থেকে একটি হাতুড়ি নিয়ে নেন। পাইথনের নিজস্ব বিশাল একটি টুলবক্স বা বিল্ট-ইন মডিউল (যাকে স্ট্যান্ডার্ড লাইব্রেরি বলে) আছে, আর আপনি চাইলে ইন্টারনেট থেকে আরও অনেক মডিউল ইনস্টল করতে পারেন।

মডিউল সাধারণত তিন ধরণের হয়:

  • বিল্ট-ইন মডিউল (Built-in modules) — যেগুলো পাইথনের সাথেই আসে: math, random, os, json, ইত্যাদি।
  • থার্ড-পার্টি মডিউল (Third-party modules) — যেগুলো pip দিয়ে ইনস্টল করতে হয়: requests, flask, numpy, ইত্যাদি।
  • আপনার নিজের মডিউল (Your own modules) — আপনার লেখা যেকোনো .py ফাইল অন্য ফাইলে ইমপোর্ট করা যেতে পারে।

ইমপোর্ট করার ধরনসমূহ (Import Styles)

# Style 1: Import the whole module
import math
print(math.sqrt(144)) # Must use 'math.' prefix
print(math.pi)
# Style 2: Import specific things
from random import randint, choice
print(randint(1, 100)) # No prefix needed
print(choice(["rock", "paper", "scissors"]))
# Style 3: Import with an alias
import datetime as dt
now = dt.datetime.now()
print(f"Today: {now.strftime('%Y-%m-%d')}")
# Style 4: Import everything (usually avoid this!)
# from math import * # Pollutes your namespace
Output
12.0
3.141592653589793
42
rock
Today: 2026-03-08

দরকারি স্ট্যান্ডার্ড লাইব্রেরি মডিউলগুলো (Useful Standard Library Modules)

পাইথনের স্ট্যান্ডার্ড লাইব্রেরি এতটাই সমৃদ্ধ যে একে প্রায়শই "batteries included" বা "ব্যাটারি সংযুক্ত" বলা হয়। নিচে এমন কিছু মডিউল দেওয়া হলো যা আপনার প্রতিনিয়ত কাজে লাগবে:

  • math — গাণিতিক কাজ: sqrt, ceil, floor, log, এবং pi এর মতো ধ্রুবক
  • random — এলোমেলো সংখ্যা বা র‍্যান্ডম নাম্বার: randint, choice, shuffle, sample
  • os — অপারেটিং সিস্টেমের কাজ: ফাইল পাথ, এনভায়রনমেন্ট ভ্যারিয়েবল, ডিরেক্টরি
  • json — JSON ডেটা পড়া এবং লেখা
  • datetime — তারিখ এবং সময়
  • collections — দারুণ কিছু কন্টেইনার: Counter, defaultdict, deque
  • pathlib — আধুনিক পদ্ধতিতে ফাইল পাথ সামলানো

স্ট্যান্ডার্ড লাইব্রেরির বিশেষ অংশগুলো (Standard Library Highlights)

# collections.Counter — count things instantly
from collections import Counter
word = "mississippi"
letter_freq = Counter(word)
print(f"Letter frequencies: {letter_freq}")
print(f"Most common: {letter_freq.most_common(2)}")
# json — convert between Python dicts and JSON strings
import json
player = {"name": "Link", "health": 100, "items": ["sword", "shield"]}
json_string = json.dumps(player, indent=2)
print(f"\nJSON:\n{json_string}")
# Parse it back
parsed = json.loads(json_string)
print(f"\nParsed name: {parsed['name']}")
# pathlib — modern file paths
from pathlib import Path
home = Path.home()
print(f"\nHome directory: {home}")
print(f"Desktop exists: {(home / 'Desktop').exists()}")
Output
Letter frequencies: Counter({'s': 4, 'i': 4, 'p': 2, 'm': 1})
Most common: [('s', 4), ('i', 4)]

JSON:
{
  "name": "Link",
  "health": 100,
  "items": [
    "sword",
    "shield"
  ]
}

Parsed name: Link

Home directory: /Users/arman
Desktop exists: True

__name__ গার্ড এবং pip (The __name__ Guard & pip)

যখন আপনি কোনো পাইথন ফাইল সরাসরি রান করেন, তখন পাইথন __name__ নামক একটি স্পেশাল ভ্যারিয়েবলকে "__main__" হিসেবে সেট করে। আর যখন ফাইলটিকে অন্য কোথাও মডিউল হিসেবে ইমপোর্ট করা হয়, তখন __name__ এর স্থানে মডিউলটির নাম সেট হয়ে যায়। এর সাহায্যে আপনি এমন কোড লিখতে পারেন যা কেবল তখনই রান করবে যখন ফাইলটি সরাসরি চালানো হয় — ইমপোর্ট করার সময় নয়।

থার্ড-পার্টি প্যাকেজ ইনস্টল করতে pip ব্যবহার করুন — যা পাইথনের প্যাকেজ ইনস্টলার:

  • pip install requests — কোনো প্যাকেজ ইনস্টল করতে
  • pip install -r requirements.txt — একটি ফাইল থেকে ইনস্টল করতে
  • pip list — কী কী ইনস্টল করা আছে তা দেখতে
  • pip uninstall requests — কোনো প্যাকেজ মুছে ফেলতে বা আনইনস্টল করতে

__name__ গার্ড (The __name__ Guard)

# Imagine this is in a file called 'calculator.py'
def add(a, b):
return a + b
def multiply(a, b):
return a * b
# This block only runs when you execute THIS file directly
# It WON'T run when someone does: import calculator
if __name__ == "__main__":
# Test our functions
print(f"add(2, 3) = {add(2, 3)}")
print(f"multiply(4, 5) = {multiply(4, 5)}")
print("All tests passed!")
# What __name__ actually is:
print(f"\n__name__ = {__name__}")
Output
add(2, 3) = 5
multiply(4, 5) = 20
All tests passed!

__name__ = __main__
Note: যখন আপনার কেবল কয়েকটি জিনিসের প্রয়োজন হয়, তখন সব সময় from module import specific_thing ব্যবহার করুন। from math import * দিয়ে সবকিছু ইমপোর্ট করা অনেকটা মেঝেতে পুরো টুলবক্স ঢেলে দেওয়ার মতো — আপনি বুঝতে পারবেন না কোনটা কোথা থেকে এসেছে, এবং নামের মধ্যে সংঘর্ষ (name clash) হতে পারে।
চ্যালেঞ্জ

ছোট কুইজ

import math as m কী কাজ করে?
Classes & OOPLambda, Map & Filter