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) တွေထဲ ထည့်ထားတယ်။
- 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 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 expressions2. External/Third-Party Modules (pip နဲ့ install လုပ်ရတာ)
တခြား developer တွေရေးထားတဲ့ module တွေကို pip command နဲ့ install လုပ်ရတယ်။
# pip နဲ့ install လုပ်နည်း
$ pip install numpy
$ pip install pandas
$ pip install requests
$ pip install matplotlibImport လုပ်မယ်
နည်းလမ်း (၁): import module_name
Module တစ်ခုလုံးကို import လုပ်တာ။ ဒါက အခြေခံအကျဆုံး။
# 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)) # 4Output:
4.0
3.141592653589793
5
4ဒီနည်းက ကျနော့်စားပွဲပေါ် math ပုံးကြီး တင်ထားလိုက်။ လိုရင် အဲ့ပုံးထဲက ယူသုံးမယ် ဆိုတဲ့ ပုံစံ။ ဘယ်ပုံးထဲက ပစ္စည်းဆိုတာ ရှင်းရှင်းလင်းလင်း သိရတယ်။
နည်းလမ်း (၂): from module_name import specific_items
Module ထဲက လိုတဲ့ item တွေပဲ ရွေးထုတ်ပြီး import လုပ်တာ။
# 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 definedOutput:
4.0
3.141592653589793ဒီနည်းက ပုံးကြီး မယူလာနဲ့တော့။ အထဲက sqrt နဲ့ pi ပဲ ထုတ်ခဲ့ ဆိုတဲ့ ပုံစံ။ Code က ပိုတိုသွားတယ်။
နည်းလမ်း (၃): import module_name as alias
Module name က ရှည်လွန်းရင် နာမည်ပြောင် (alias) ပေးပြီး သုံးတာ။
# 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 pltOutput:
4.0
3.141592653589793ဒါက math ဆိုတာကြီးကို ရိုက်နေရတာ လက်ညောင်းတယ်။ m လို့ပဲ ခေါ်မယ်ကွာ ဆိုပြီး သတ်မှတ်လိုက်တာ။
နည်းလမ်း (၄): from module_name import * (Wildcard - မသုံးသင့်ဘူး!)
Module ထဲက အရာအားလုံးကို import လုပ်တာ။
# 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 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 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: အသက် တွက်တာ
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 ဖြစ်တာ
# ကိုယ့်ဆီမှာ 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:
ကိုယ့် pi: 3
import လုပ်ပြီးရင် pi: 3.141592653589793Solution: Proper Import သုံး
# ကိုယ့်ဆီမှာ 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:
ကိုယ့် pi: 3
ကိုယ့် pi: 3
math ရဲ့ pi: 3.141592653589793Custom Modules (ကိုယ့်ရဲ့ ကိုယ်ပိုင် module လေးတွေ)
ဘရို ကိုယ်တိုင် module တစ်ခု ဆောက်ပြီး import လုပ်လို့ရတယ်။
Step 1: Module File ဆောက်မယ်
my_tools.py ဆိုတဲ့ file တစ်ခု ဆောက်ပြီး function တွေ ရေးမယ်။
# 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 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:
Hi မင်းထက်သာ!
5 + 3 = 8
ဧရိယာ: 50
Version: 1.0.0
Author: Bro CoderAlternative: Specific Import
# လိုတဲ့ function တွေပဲ import လုပ်မယ်
from my_tools import greet, add_numbers
# တိုက်ရိုက် သုံးလို့ရပြီ
print(greet("မောင်စိုင်း"))
print(add_numbers(10, 20))Packages နဲ့ __init__.py
Package ဆိုတာ module တွေ အများကြီးကို folder တစ်ခုထဲမှာ စုထားတာပါ။
Package 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 လုပ်လို့ရမှာ။
- Folder ကို package အဖြစ် သတ်မှတ်တယ်
- Package import လုပ်တဲ့အခါ run မယ့် code ရေးလို့ရတယ်
- Package level variables တွေ သတ်မှတ်လို့ရတယ်
- Package ရဲ့ public API ကို define လုပ်လို့ရတယ်
Example Files:
# utils/math_tools.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b# 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 file - ဒါပဲ ရှိလည်း ရတယ်Using Package (Method 1):
# 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
# 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
# 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
# အခု 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:
# 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 requestsPopular External 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 tensorflowExample: Using requests Package
# 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!")Module Best Practices
1. Import Statements:
# 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 add2. Import Statement ရေးနည်း:
# 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 ထဲကဟာ အားလုံးကြည့်မယ်
import math
# math module ထဲမှာ ဘာတွေ ပါလဲ ကြည့်မယ်
print(dir(math))
# Output: ['__doc__', '__name__', ..., 'ceil', 'floor', 'pi', 'sqrt', ...]help() - Module/Function အကြောင်း အသေးစိတ် ဖတ်ကြည့်မယ်
import math
# math module အကြောင်း အချက်အလက်
help(math)
# sqrt function အကြောင်း အချက်အလက်
help(math.sqrt)
# Output: Help documentation ပေါ်လာမယ်Checking Specific Attributes:
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:
calculator_project/
├── main.py
└── calculator/
├── __init__.py
├── basic.py
└── advanced.pyFile 1: 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 / bFile 2: 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) * 100File 3: 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 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:
=== 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 တစ်ခုလုံး importfrom module import item- လိုတဲ့ item တွေပဲ importimport 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
# === 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