पिछले अध्याय में हमने Python Module के बारे में सीखा था। एक Module सामान्यतः एक .py File होती है जिसमें Functions, Variables, Classes और अन्य Python Code रखा जा सकता है।
लेकिन जब किसी बड़े Project में Modules की संख्या बहुत अधिक हो जाती है, तब केवल अलग-अलग Files रखना पर्याप्त नहीं होता। ऐसी स्थिति में Modules को व्यवस्थित तरीके से अलग-अलग Folders में रखा जाता है।
Python में ऐसे Folder Structure को व्यवस्थित करने के लिए Package का उपयोग किया जाता है।
सरल शब्दों में—
Module एक Python File है, जबकि Package संबंधित Modules का व्यवस्थित Collection है।
Package एक ऐसा Directory/Folder Structure है जिसमें संबंधित Python Modules को एक साथ व्यवस्थित किया जाता है।
उदाहरण के लिए किसी School Management Project में अलग-अलग कार्यों के लिए ये Modules हो सकते हैं—
student.py
teacher.py
fees.py
result.py
इन सभी को एक school Package के अंदर रखा जा सकता है।
school/
student.py
teacher.py
fees.py
result.py
इससे Project अधिक व्यवस्थित हो जाता है।
|
Module |
Package |
|
सामान्यतः एक .py File |
Modules का व्यवस्थित Collection |
|
छोटा Code Unit |
बड़े Project को Organize करता है |
|
Functions, Classes आदि रख सकता है |
कई Modules/Subpackages रख सकता है |
|
उदाहरण: student.py |
उदाहरण: school |
Package की आवश्यकता क्यों होती है?
बड़े Python Projects में Package का उपयोग कई कारणों से किया जाता है—
- Code को व्यवस्थित रखने के लिए
- Related Modules को एक जगह रखने के लिए
- Code Reusability बढ़ाने के लिए
- बड़े Project को छोटे भागों में विभाजित करने के लिए
- Namespace को व्यवस्थित रखने के लिए
- Project को Maintain करना आसान बनाने के लिए
Python Package का Basic Structure
मान लीजिए हमारे पास college नाम का Package है।
college/
__init__.py
student.py
teacher.py
fees.py
यहाँ—
- college → Package
- student.py → Module
- teacher.py → Module
- fees.py → Module
- __init__.py → Package Initialization File
__init__.py Package से संबंधित एक विशेष Python File है।
Traditional Python Packages में इसका उपयोग Package को पहचानने और Package Initialization Code रखने के लिए किया जाता था।
आज के Python Versions में कुछ Packages __init__.py के बिना भी काम कर सकते हैं, जिन्हें Namespace Packages कहा जाता है। फिर भी सामान्य और Beginner-friendly Package Structure में __init__.py रखना उपयोगी है।
college/
__init__.py
student.py
teacher.py
__init__.py में आवश्यकता के अनुसार Initialization Code या Package से संबंधित Imports रखे जा सकते हैं।
मान लेते हैं कि हमें calculator नाम का Package बनाना है।
calculator/
__init__.py
addition.py
subtraction.py
def add(a, b):
return a + b
def subtract(a, b):
return a - b
अब किसी दूसरी Python File में इन्हें Import कर सकते हैं।
from calculator import addition
print(addition.add(10, 20))
30
यदि केवल add() Function चाहिए—
from calculator.addition import add
print(add(15, 25))
40
import calculator.addition
इसके बाद—
print(calculator.addition.add(10, 20))
as Keyword की सहायता से छोटा नाम दिया जा सकता है।
import calculator.addition as add
print(add.add(5, 10))
किसी Package के अंदर एक और Package हो तो उसे Subpackage कहते हैं।
उदाहरण—
college/
__init__.py
student/
__init__.py
admission.py
result.py
teacher/
__init__.py
salary.py
यहाँ student और teacher, college के Subpackages हैं।
from college.student import result
या किसी Function को सीधे Import कर सकते हैं—
from college.student.result import calculate_result
जब Import करते समय Package का पूरा Path लिखा जाता है, तो उसे Absolute Import कहते हैं।
उदाहरण—
from college.student.result import calculate_result
यहाँ पूरा Package Path स्पष्ट रूप से दिया गया है।
Package के अंदर किसी दूसरे Module को Import करते समय Relative Path का उपयोग किया जा सकता है।
उदाहरण—
from .student import Student
यहाँ . वर्तमान Package को दर्शाता है।
एक Level ऊपर जाने के लिए—
from ..common import helper
Relative Imports मुख्यतः बड़े Package Structures में उपयोगी होते हैं।
Package में __init__.py का उपयोग
__init__.py के अंदर Functions या Modules Import किए जा सकते हैं।
उदाहरण—
from .addition import add
from .subtraction import subtract
अब Package का उपयोग सरल तरीके से किया जा सकता है।
Project Structure:
calculator/
__init__.py
addition.py
subtraction.py
__init__.py
from .addition import add
from .subtraction import subtract
अब—
from calculator import add, subtract
print(add(10, 20))
print(subtract(20, 5))
30
15
Python में कुछ Packages ऐसे भी हो सकते हैं जिनमें __init__.py File नहीं होती। इन्हें Namespace Packages कहा जाता है।
यह सुविधा Python के बड़े Projects और अलग-अलग Locations से Packages Organize करने में उपयोगी हो सकती है।
Beginner Projects में हालांकि सामान्य Package Structure के लिए __init__.py वाला तरीका समझना अधिक आसान है।
Package और Module का Practical Example
मान लेते हैं कि हम एक Student Management System बना रहे हैं।
Structure:
student_management/
__init__.py
student.py
marks.py
fees.py
def student_name():
return "Rahul"
def total_marks(a, b, c):
return a + b + c
def calculate_fee(fee):
return fee
अब Main Program में—
from student_management.student import student_name
from student_management.marks import total_marks
print(student_name())
print(total_marks(80, 75, 90))
Package Import में होने वाली सामान्य Errors
यदि Python को Package या Module नहीं मिलता—
from calculator.addition import add
और Package उपलब्ध नहीं है, तो Error आ सकता है:
ModuleNotFoundError
- Folder Name Check करें।
- File Name Check करें।
- Current Working Directory Check करें।
- Import Path सही है या नहीं देखें।
यदि Module मौजूद है लेकिन उसमें माँगा गया Function या Class उपलब्ध नहीं है—
from calculator.addition import multiply
जब addition.py में multiply() मौजूद नहीं है, तो ImportError आ सकता है।
Practical Program 1 – Calculator Package
calculator/
__init__.py
add.py
multiply.py
def add(a, b):
return a + b
def multiply(a, b):
return a * b
from calculator.add import add
from calculator.multiply import multiply
print(add(10, 20))
print(multiply(5, 4))
30
20
Practical Program 2 – Student Package
student/
__init__.py
information.py
result.py
def student(name, course):
print("Name:", name)
print("Course:", course)
def result(marks):
return sum(marks)
from student.information import student
from student.result import result
student("Rahul", "BCA")
marks = [80, 75, 90]
print("Total:", result(marks))
Name: Rahul
Course: BCA
Total: 245
Related Modules को एक जगह रखा जा सकता है।
एक Package को अलग-अलग Projects में उपयोग किया जा सकता है।
बड़े Project को Manage करना आसान हो जाता है।
एक ही नाम के Modules या Functions के बीच Confusion कम होता है।
अलग-अलग Developers अलग-अलग Modules पर काम कर सकते हैं।
Module, Package और Library में अंतर
|
Module |
Package |
Library |
|
एक Python File |
Modules का Collection |
उपयोगी Code का बड़ा Collection |
|
.py File |
Folder/Package Structure |
कई Packages/Modules हो सकते हैं |
|
छोटा Unit |
Organized Group |
व्यापक Functionality |
|
math.py जैसा |
mypackage जैसा |
NumPy जैसे बड़े Collections |
Library और Package शब्द कई बार अलग संदर्भों में अलग अर्थों में उपयोग होते हैं; इन्हें हमेशा बिल्कुल समान मानना सही नहीं है।
परीक्षा की दृष्टि से महत्वपूर्ण तथ्य
- Module सामान्यतः एक .py File होता है।
- Package संबंधित Modules का व्यवस्थित Collection है।
- __init__.py Package Initialization के लिए उपयोग किया जा सकता है।
- from package import module से Module Import किया जा सकता है।
- from package.module import function से Specific Function Import किया जा सकता है।
- . Relative Import में Current Package को दर्शाता है।
- .. Parent Package की ओर जाने के लिए उपयोग किया जा सकता है।
- Python Namespace Packages में __init__.py आवश्यक नहीं होता।
Frequently Asked Questions (FAQs)
प्रश्न 1. Python Package क्या है?
Related Python Modules को व्यवस्थित रूप से एक साथ रखने वाला Package/Directory Structure Python Package कहलाता है।
प्रश्न 2. __init__.py क्या है?
यह Package से संबंधित विशेष Python File है, जिसमें Initialization या Package-level Imports रखे जा सकते हैं।
प्रश्न 3. क्या हर Package में __init__.py आवश्यक है?
नहीं। Modern Python में Namespace Packages __init__.py के बिना भी हो सकते हैं।
प्रश्न 4. Package से Function कैसे Import करें?
from package.module import function
किसी Package के अंदर मौजूद दूसरा Package Subpackage कहलाता है।
- Module → एक Python File
- Package → Related Modules का Collection
- __init__.py → Package Initialization के लिए
- Subpackage → Package के अंदर Package
- Absolute Import → पूरा Import Path
- Relative Import → . या .. के साथ Import
- Namespace Package → __init__.py के बिना भी संभव Package Structure
Python Math Module in Hindi – math Module, sqrt(), pow(), ceil(), floor(), factorial(), gcd(), lcm(), fabs(), log(), sin(), cos(), tan(), Constants और Practical Programs।