Modules and Import

Module ဆိုတာ?

အလွယ်ပြောရင် Module က Python code တွေ စုထားတဲ့ .py file။

ဘရို အရင်တစ်ခေါက်က def နဲ့ function တွေ ဆောက်တတ်သွားပြီနော်။ အဲ့ဒီ function တွေ အများကြီးကို .py file တစ်ခုထဲမှာ စုရေးထားလိုက်... အဲ့ဒါ Module ဖြစ်သွားရော။

ဥပမာ ဘရို့မှာ သင်္ချာ တွက်တဲ့ function တွေ အများကြီး ရှိတယ်။ အဲ့ဒါတွေကို math_tools.py ဆိုတဲ့ file တစ်ခုထဲမှာ စုထားလိုက်တယ်။ အဲ့ဒါ Module တစ်ခု ဖြစ်သွားပြီ။

ဘာလို့ Module တွေ လိုအပ်တာလဲ?

Toolbox (ကိရိယာပုံး) လို့တွေးကြည့်:

  • bro ရဲ့ main code (ဥပမာ main.py) က အလုပ်စားပွဲ ပေါ့။
  • အလုပ်လုပ်ဖို့ ပစ္စည်း တွေ လိုမယ်။
  • အဲ့ဒီ ပစ္စည်း တွေ (ဥပမာ: သင်္ချာတွက်ဖို့ function တွေ၊ ရက်စွဲတွေနဲ့ ကလိဖို့ function တွေ) ကို အလုပ်စားပွဲပေါ်မှာ အကုန် ပုံထားရင် ရှုပ် ကုန်မှာပေါ့။
  • အဲ့ဒါကြောင့် ပစ္စည်း တွေကို အမျိုးအစားတူရာ စုပြီး ကိရိယာပုံး (Module) တွေထဲ ထည့်ထားတယ်။
Module သုံးရင်:
  • Code Organization: Code တွေကို စနစ်တကျ စီစဉ်နိုင်မယ်
  • Reusability: တစ်ကြိမ် ရေးပြီး သုံးချင်တဲ့ နေရာတိုင်းမှာ သုံး
  • Easy Maintenance: ပြင်ချင်ရင် module တစ်နေရာတည်းကိုပဲ ပြင်
  • Avoid Name Conflicts: Function name တွေ ထပ်မသွားအောင် ခွဲထားနိုင်တယ်
  • Share Code: ကိုယ့် code ကို တခြားသူတွေ ပေးသုံးလို့ရတယ်

Import လုပ်တယ်ဆိုတာ အဲ့ဒီ ကိရိယာပုံးထဲက ပစ္စည်းကို ယူသုံး တာပါပဲ။

Module

Python မှာ Module (၃) မျိုး ရှိတယ်:

1. Standard Library Modules (Python မှာ ပါပြီးသား)

Python ကို install လုပ်လိုက်တာနဲ့ ပါပြီးသား module တွေ။ install ထပ်လုပ်စရာ မလိုဘူး။

standard_library_examples.py
# Standard Library Modules import math # သင်္ချာ functions import random # Random numbers import datetime # ရက်စွဲ နဲ့ အချိန် import os # Operating system functions import sys # System functions import json # JSON data import re # Regular expressions

2. External/Third-Party Modules (pip နဲ့ install လုပ်ရတာ)

တခြား developer တွေရေးထားတဲ့ module တွေကို pip command နဲ့ install လုပ်ရတယ်။

Terminal/Command Prompt
# pip နဲ့ install လုပ်နည်း $ pip install numpy $ pip install pandas $ pip install requests $ pip install matplotlib
pip ဆိုတာ ဘာလဲ? pip က Python Package Installer ကိုပြောတာ။ Python packages (external modules) တွေကို Internet ကနေ download လုပ်ပြီး install လုပ်ပေးတဲ့ tool။

Import လုပ်မယ်

နည်းလမ်း (၁): import module_name

Module တစ်ခုလုံးကို import လုပ်တာ။ ဒါက အခြေခံအကျဆုံး။

import_basic.py
# math module တစ်ခုလုံးကို import လုပ်မယ် import math # သုံးတဲ့အခါ: module_name.function_name() print(math.sqrt(16)) # 4.0 print(math.pi) # 3.141592653589793 print(math.ceil(4.3)) # 5 print(math.floor(4.9)) # 4

Output:

Output
4.0 3.141592653589793 5 4

ဒီနည်းက ကျနော့်စားပွဲပေါ် math ပုံးကြီး တင်ထားလိုက်။ လိုရင် အဲ့ပုံးထဲက ယူသုံးမယ် ဆိုတဲ့ ပုံစံ။ ဘယ်ပုံးထဲက ပစ္စည်းဆိုတာ ရှင်းရှင်းလင်းလင်း သိရတယ်။

နည်းလမ်း (၂): from module_name import specific_items

Module ထဲက လိုတဲ့ item တွေပဲ ရွေးထုတ်ပြီး import လုပ်တာ။

import_specific.py
# math module ထဲက sqrt နဲ့ pi ပဲ import လုပ်မယ် from math import sqrt, pi # သုံးတဲ့အခါ: function_name() (module name မလိုတော့ဘူး) print(sqrt(16)) # 4.0 (math. မလိုတော့ဘူး) print(pi) # 3.141592653589793 # ဒါပေမယ့် ceil ကို import မလုပ်ထားတော့ သုံးလို့မရဘူး # print(ceil(4.3)) # NameError: name 'ceil' is not defined

Output:

Output
4.0 3.141592653589793

ဒီနည်းက ပုံးကြီး မယူလာနဲ့တော့။ အထဲက sqrt နဲ့ pi ပဲ ထုတ်ခဲ့ ဆိုတဲ့ ပုံစံ။ Code က ပိုတိုသွားတယ်။

နည်းလမ်း (၃): import module_name as alias

Module name က ရှည်လွန်းရင် နာမည်ပြောင် (alias) ပေးပြီး သုံးတာ။

import_alias.py
# math module ကို m ဆိုတဲ့ နာမည်ပြောင်နဲ့ import လုပ်မယ် import math as m # သုံးတဲ့အခါ: alias.function_name() print(m.sqrt(16)) # 4.0 print(m.pi) # 3.141592653589793 # Developer တွေ အသုံးများတဲ့ classic ဥပမာတွေ # import numpy as np # import pandas as pd # import matplotlib.pyplot as plt

Output:

Output
4.0 3.141592653589793

ဒါက math ဆိုတာကြီးကို ရိုက်နေရတာ လက်ညောင်းတယ်။ m လို့ပဲ ခေါ်မယ်ကွာ ဆိုပြီး သတ်မှတ်လိုက်တာ။

နည်းလမ်း (၄): from module_name import * (Wildcard - မသုံးသင့်ဘူး!)

Module ထဲက အရာအားလုံးကို import လုပ်တာ။

import_wildcard.py
# math module ထဲက အရာအားလုံးကို import လုပ်မယ် (BAD PRACTICE!) from math import * # သုံးတဲ့အခါ: တိုက်ရိုက်ခေါ်လို့ရတယ် print(sqrt(16)) print(pi) print(ceil(4.3))
ဘရို၊ ဒါကို ရှောင်! ဘာလို့လဲဆိုတော့?
  • math ထဲမှာ ဘာပစ္စည်းတွေ ပါမှန်း မသိဘဲ အကုန် မှောက်ချ လိုက်တော့...
  • တကယ်လို့ ဘရို့ code မှာ pi ဆိုတဲ့ variable တစ်ခု ရှိနေရင်၊ import လုပ်လိုက်တဲ့ pi နဲ့ တိုက် သွားရော။
  • Code က ရှုပ် သွားတယ်။ ဘာတွေ import လုပ်လိုက်မှန်း မသိတော့။

Real Example: datetime Module

datetime ကတော့ ရက်စွဲ/အချိန်တွေ နဲ့ အလုပ်လုပ်ဖို့ သုံးတယ်။

Example 1: လက်ရှိ ရက်စွဲ နဲ့ အချိန်

datetime_example_1.py
# datetime module ကို import လုပ်မယ် import datetime # လက်ရှိ ရက်စွဲ နဲ့ အချိန် ရမယ် now = datetime.datetime.now() print(f"လက်ရှိ: {now}") # ဒီနေ့ ရက်စွဲပဲ ရမယ် today = datetime.date.today() print(f"ဒီနေ့: {today}") # Format လုပ်ပြီး ပြမယ် formatted = now.strftime("%Y-%m-%d %H:%M:%S") print(f"Format လုပ်ပြီး: {formatted}")

Example 2: datetime ကို အတိုကောက် import လုပ်မယ်

datetime_example_2.py
# datetime module ထဲက လိုတဲ့ classes တွေပဲ import လုပ်မယ် from datetime import datetime, date, timedelta # လက်ရှိ အချိန် now = datetime.now() print(f"အခု: {now}") # မနက်ဖြန် tomorrow = date.today() + timedelta(days=1) print(f"မနက်ဖြန်: {tomorrow}") # မနေ့က yesterday = date.today() - timedelta(days=1) print(f"မနေ့က: {yesterday}") # နောက်ထပ် ၇ ရက် next_week = date.today() + timedelta(weeks=1) print(f"နောက်အပတ်: {next_week}")

Example 3: အသက် တွက်တာ

datetime_age_calculator.py
from datetime import date def calculate_age(birth_year, birth_month, birth_day): # မွေးနေ့ birth_date = date(birth_year, birth_month, birth_day) # ဒီနေ့ today = date.today() # အသက် တွက်မယ် age = today.year - birth_date.year # မွေးနေ့ မကျော်သေးရင် တစ်နှစ် နုတ်မယ် if (today.month, today.day) < (birth_date.month, birth_date.day): age -= 1 return age # အသက် တွက်ကြည့်မယ် age = calculate_age(2000, 5, 15) print(f"အသက်: {age} နှစ်")

Name Conflicts (နာမည်တူတော့ ပြဿနာတက်)

Wildcard import (from module import *) သုံးရင် name conflict ဖြစ်နိုင်တယ်။

Example: Name Conflict ဖြစ်တာ

name_conflict_bad.py
# ကိုယ့်ဆီမှာ pi variable တစ်ခု ရှိနေတယ် pi = 3 print(f"ကိုယ့် pi: {pi}") # Wildcard import လုပ်လိုက်တယ် from math import * # အခု pi က math.pi ဖြစ်သွားပြီ! ကိုယ့် pi က ပျောက်သွားပြီ! print(f"import လုပ်ပြီးရင် pi: {pi}") # 3.141592... ဖြစ်သွားမယ်

Output:

Output
ကိုယ့် pi: 3 import လုပ်ပြီးရင် pi: 3.141592653589793

Solution: Proper Import သုံး

name_conflict_good.py
# ကိုယ့်ဆီမှာ pi variable တစ်ခု ရှိနေတယ် pi = 3 print(f"ကိုယ့် pi: {pi}") # Module name နဲ့ import လုပ်မယ် import math # အခု ရှင်းရှင်းလင်းလင်း ခွဲခြားနိုင်တယ် print(f"ကိုယ့် pi: {pi}") # 3 print(f"math ရဲ့ pi: {math.pi}") # 3.141592...

Output:

Output
ကိုယ့် pi: 3 ကိုယ့် pi: 3 math ရဲ့ pi: 3.141592653589793

Custom Modules (ကိုယ့်ရဲ့ ကိုယ်ပိုင် module လေးတွေ)

ဘရို ကိုယ်တိုင် module တစ်ခု ဆောက်ပြီး import လုပ်လို့ရတယ်။

Step 1: Module File ဆောက်မယ်

my_tools.py ဆိုတဲ့ file တစ်ခု ဆောက်ပြီး function တွေ ရေးမယ်။

my_tools.py
# my_tools.py - ကိုယ့်ဆီက ကိရိယာပုံး def greet(name): """နှုတ်ဆက်တဲ့ function""" return f"Hi {name}!" def add_numbers(a, b): """ဂဏန်းနှစ်လုံး ပေါင်းတဲ့ function""" return a + b def calculate_area(length, width): """စတုဂံ ဧရိယာ တွက်တဲ့ function""" return length * width # Module ထဲမှာ variable လည်း ထားလို့ရတယ် VERSION = "1.0.0" AUTHOR = "Bro Coder"

Step 2: Custom Module ကို Import လုပ်မယ်

အခု main.py file မှာ ကိုယ့် module ကို import လုပ်လို့ရပြီ။

main.py
# main.py - Main program # ကိုယ့် module ကို import လုပ်မယ် import my_tools # Module ထဲက function တွေ သုံးမယ် print(my_tools.greet("မင်းထက်သာ")) print(f"5 + 3 = {my_tools.add_numbers(5, 3)}") print(f"ဧရိယာ: {my_tools.calculate_area(10, 5)}") # Module variable တွေလည်း access လုပ်လို့ရတယ် print(f"Version: {my_tools.VERSION}") print(f"Author: {my_tools.AUTHOR}")

Output:

Output
Hi မင်းထက်သာ! 5 + 3 = 8 ဧရိယာ: 50 Version: 1.0.0 Author: Bro Coder

Alternative: Specific Import

main_alternative.py
# လိုတဲ့ function တွေပဲ import လုပ်မယ် from my_tools import greet, add_numbers # တိုက်ရိုက် သုံးလို့ရပြီ print(greet("မောင်စိုင်း")) print(add_numbers(10, 20))
Important: Custom module ကို import လုပ်ဖို့ဆိုရင် module file (.py) က main file နဲ့ တူညီတဲ့ folder/directory ထဲမှာ ရှိရမယ်။ မဟုတ်ရင် Python က ရှာမတွေ့ဘူး။

Packages နဲ့ __init__.py

Package ဆိုတာ module တွေ အများကြီးကို folder တစ်ခုထဲမှာ စုထားတာပါ။

Package Structure:

Folder Structure
my_project/ ├── main.py └── utils/ ├── __init__.py ├── math_tools.py ├── string_tools.py └── date_tools.py

__init__.py ဆိုတာ?

__init__.py က folder တစ်ခုကို Python package အဖြစ် သတ်မှတ်ပေးတဲ့ file ပါ။ ဒါမှ import လုပ်လို့ရမှာ။

__init__.py ရဲ့ အလုပ်တွေ:
  • Folder ကို package အဖြစ် သတ်မှတ်တယ်
  • Package import လုပ်တဲ့အခါ run မယ့် code ရေးလို့ရတယ်
  • Package level variables တွေ သတ်မှတ်လို့ရတယ်
  • Package ရဲ့ public API ကို define လုပ်လို့ရတယ်

Example Files:

utils/math_tools.py
# utils/math_tools.py def add(a, b): return a + b def multiply(a, b): return a * b
utils/string_tools.py
# utils/string_tools.py def reverse_string(text): return text[::-1] def capitalize_words(text): return text.title()

Simple __init__.py (Empty):

utils/__init__.py (Empty)
# utils/__init__.py # Empty file - ဒါပဲ ရှိလည်း ရတယ်

Using Package (Method 1):

main.py
# main.py # Package ထဲက module ကို import လုပ်မယ် from utils import math_tools, string_tools # သုံးမယ် print(math_tools.add(5, 3)) print(string_tools.reverse_string("Hello"))

Using Package (Method 2):

main.py
# main.py # Module ထဲက function တိုက်ရိုက် import လုပ်မယ် from utils.math_tools import add, multiply from utils.string_tools import reverse_string # တိုက်ရိုက်သုံးလို့ရပြီ print(add(10, 20)) print(reverse_string("Python"))

Advanced __init__.py (With Exports):

utils/__init__.py (Advanced)
# utils/__init__.py # Package level imports from .math_tools import add, multiply from .string_tools import reverse_string, capitalize_words # Package metadata __version__ = "1.0.0" __author__ = "Bro Coder" # Define public API __all__ = ["add", "multiply", "reverse_string", "capitalize_words"]

Using Advanced Package:

main.py
# main.py # အခု package ထဲက တိုက်ရိုက် import လုပ်လို့ရပြီ from utils import add, reverse_string print(add(5, 3)) print(reverse_string("Hello")) # Package metadata ကိုလည်း access လုပ်လို့ရတယ် import utils print(f"Version: {utils.__version__}")

External Packages Install (pip)

External packages (Third-party modules) တွေကို pip command နဲ့ install လုပ်ရတယ်။

pip Commands:

Terminal/Command Prompt
# Package တစ်ခု install လုပ်မယ် $ pip install requests # Specific version install လုပ်မယ် $ pip install requests==2.28.0 # Package upgrade လုပ်မယ် $ pip install --upgrade requests # Package uninstall လုပ်မယ် $ pip uninstall requests # Install လုပ်ထားတဲ့ packages list ကြည့်မယ် $ pip list # Package တစ်ခုရဲ့ info ကြည့်မယ် $ pip show requests

Popular External Packages:

Popular Packages
# Data Science $ pip install numpy $ pip install pandas $ pip install matplotlib # Web Development $ pip install flask $ pip install django $ pip install fastapi # Web Scraping $ pip install requests $ pip install beautifulsoup4 # Machine Learning $ pip install scikit-learn $ pip install tensorflow

Example: Using requests Package

requests_example.py
# pip install requests import requests # Website တစ်ခုကို HTTP request ပို့မယ် response = requests.get("https://api.github.com") # Status code ကြည့်မယ် print(f"Status: {response.status_code}") # Response data ကြည့်မယ် if response.status_code == 200: data = response.json() print("Data received successfully!")
သတိ: External package တွေကို install လုပ်ဖို့ Internet connection လိုမယ်။

Module Best Practices

1. Import Statements:

import_order.py
# Import order အစီစဉ်တကျ # 1. Standard library imports import os import sys from datetime import datetime # 2. Third-party imports import numpy as np import pandas as pd # 3. Local application imports from my_tools import greet from utils.math_tools import add

2. Import Statement ရေးနည်း:

import_style.py
# Good - တစ်ကြောင်းချင်းစီ ရေးတာ import os import sys import math # Bad - တစ်ကြောင်းတည်းမှာ ကော်မာနဲ့ ခြားတာ (မလုပ်သင့်) # import os, sys, math # Good - from import နဲ့ ရေးတဲ့အခါ from math import sqrt, pi, ceil # ရှည်လွန်းရင် ဒီလို ခွဲရေးလို့ရတယ် from math import ( sqrt, pi, ceil, floor, log )

3. Module Naming:

  • Module name က lowercase (ဥပမာ: my_tools.py)
  • Underscore နဲ့ ခြားပါ (ဥပမာ: string_tools.py)
  • Descriptive name ပေးသင့်တယ် (ဘာလုပ်တာလဲ သိအောင်)
  • Number နဲ့ မစနဲ့ (ဥပမာ: 1_tools.py - မကောင်းဘူး)

4. ရှောင်သင့်:

  • from module import * - Wildcard import
  • တူညီတဲ့ module ကို ထပ်ခါထပ်ခါ import လုပ်တာ
  • Module name နဲ့ Python keyword တူတာ
  • Circular imports (Module A က Module B ကို import လုပ်ပြီး Module B က Module A ကို ပြန် import လုပ်တာ)

dir() နဲ့ help() Functions

Module တစ်ခုထဲမှာ ဘာတွေ ပါလဲ သိချင်ရင် dir() နဲ့ help() ကိုသုံးလို့ရတယ်။

dir() - Module ထဲကဟာ အားလုံးကြည့်မယ်

dir_example.py
import math # math module ထဲမှာ ဘာတွေ ပါလဲ ကြည့်မယ် print(dir(math)) # Output: ['__doc__', '__name__', ..., 'ceil', 'floor', 'pi', 'sqrt', ...]

help() - Module/Function အကြောင်း အသေးစိတ် ဖတ်ကြည့်မယ်

help_example.py
import math # math module အကြောင်း အချက်အလက် help(math) # sqrt function အကြောင်း အချက်အလက် help(math.sqrt) # Output: Help documentation ပေါ်လာမယ်

Checking Specific Attributes:

check_attributes.py
import math # Module name print(f"Module name: {math.__name__}") # Module file location print(f"Module file: {math.__file__}") # Module documentation print(f"Documentation: {math.__doc__[:50]}...")

Practical Example: Calculator Project

အခု calculator project တစ်ခု လုပ်ကြည့်မယ်။ Module တွေ သုံးပြီး organized လုပ်ကြည့်မယ်။

Project Structure:

Folder Structure
calculator_project/ ├── main.py └── calculator/ ├── __init__.py ├── basic.py └── advanced.py

File 1: calculator/basic.py

calculator/basic.py
# calculator/basic.py - Basic operations def add(a, b): """ပေါင်းမယ်""" return a + b def subtract(a, b): """နုတ်မယ်""" return a - b def multiply(a, b): """မြှောက်မယ်""" return a * b def divide(a, b): """စားမယ်""" if b == 0: return "Cannot divide by zero!" return a / b

File 2: calculator/advanced.py

calculator/advanced.py
# calculator/advanced.py - Advanced operations import math def power(base, exponent): """ထပ်ညွှန်း တွက်တယ်""" return base ** exponent def square_root(number): """Square root ရှာတယ်""" if number < 0: return "Cannot calculate square root of negative number!" return math.sqrt(number) def percentage(value, total): """Percentage တွက်တယ်""" if total == 0: return "Total cannot be zero!" return (value / total) * 100

File 3: calculator/__init__.py

calculator/__init__.py
# calculator/__init__.py # Import လုပ်ပြီး package level မှာ ထုတ်ပြမယ် from .basic import add, subtract, multiply, divide from .advanced import power, square_root, percentage # Package metadata __version__ = "1.0.0" __author__ = "Bro Coder" # Public API __all__ = [ "add", "subtract", "multiply", "divide", "power", "square_root", "percentage" ]

File 4: main.py

main.py
# main.py - Main program # Calculator package ကို import လုပ်မယ် from calculator import ( add, subtract, multiply, divide, power, square_root, percentage ) def main(): print("=== Calculator App ===") print() # Basic operations print("Basic Operations:") print(f"10 + 5 = {add(10, 5)}") print(f"10 - 5 = {subtract(10, 5)}") print(f"10 × 5 = {multiply(10, 5)}") print(f"10 ÷ 5 = {divide(10, 5)}") print() # Advanced operations print("Advanced Operations:") print(f"2³ = {power(2, 3)}") print(f"√16 = {square_root(16)}") print(f"25 out of 100 = {percentage(25, 100)}%") if __name__ == "__main__": main()

Output:

Output
=== Calculator App === Basic Operations: 10 + 5 = 15 10 - 5 = 5 10 × 5 = 50 10 ÷ 5 = 2.0 Advanced Operations: 2³ = 8 √16 = 4.0 25 out of 100 = 25.0%

အနှစ်ချုပ်

ဘရိုရေ Module နဲ့ Import ဆိုတာ ဒါပါပဲဗျ။

Module အခြေခံများ:

  • Module: Python code တွေ စုထားတဲ့ .py file တစ်ခု
  • Package: Module တွေ စုထားတဲ့ folder (ထဲမှာ __init__.py ပါရမယ်)
  • Standard Library: Python မှာ ပါပြီးသား modules
  • External Packages: pip နဲ့ install လုပ်ရတဲ့ packages

Import Methods:

  • import module_name - Module တစ်ခုလုံး import
  • from module import item - လိုတဲ့ item တွေပဲ import
  • import module as alias - နာမည်ပြောင် သုံးမယ်
  • from module import * - အကုန် import (မသုံးသင့်!)

pip Commands:

  • pip install package_name - Install လုပ်မယ်
  • pip list - Install လုပ်ထားတာတွေ ကြည့်မယ်
  • pip uninstall package_name - Uninstall လုပ်မယ်
  • pip show package_name - Package info ကြည့်မယ်

Best Practices:

  • Import statements တွေကို file အပေါ်ဆုံးမှာ ရေးပါ
  • Standard library, external, local imports လို့ အစီစဉ်တကျ ရေးပါ
  • Wildcard import (*) ကို ရှောင်
  • Module name တွေကို descriptive ပေးသင့်တယ်
  • Package ဆောက်တဲ့အခါ __init__.py ထည့်

Quick Reference

module_reference.py
# === Import Methods === # Method 1: Import module import math math.sqrt(16) # Method 2: Import specific items from math import sqrt, pi sqrt(16) # Method 3: Import with alias import math as m m.sqrt(16) # Method 4: Import everything (DON'T USE!) from math import * # === Package Import === # Import from package from package.module import function # Import package import package # === Useful Functions === # See module contents dir(math) # Get help help(math.sqrt) # === pip Commands === # Install package # pip install package_name # List installed packages # pip list # Uninstall package # pip uninstall package_name