Skip to content

ಪ್ಯಾಕೇಜ್‌ಗಳು ಮತ್ತು __init__.py

ಪೈಥಾನ್‌ನಲ್ಲಿ, ಪ್ಯಾಕೇಜ್ (Package) ಎಂದರೆ ಸಂಬಂಧಿತ ಮೊಡ್ಯೂಲ್‌ಗಳನ್ನು (.py ಫೈಲ್‌ಗಳನ್ನು) ಒಂದು ಡೈರೆಕ್ಟರಿ ರಚನೆಯಲ್ಲಿ ಸಂಘಟಿಸುವ ಒಂದು ವಿಧಾನ. ಪ್ಯಾಕೇಜ್‌ಗಳು ದೊಡ್ಡ ಅಪ್ಲಿಕೇಶನ್‌ಗಳನ್ನು ನಿರ್ವಹಿಸಬಲ್ಲ, ಕ್ರಮಾನುಗತ (hierarchical) ರಚನೆಯಲ್ಲಿ ವಿಭಜಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ.

ಒಂದು ಸಾಮಾನ್ಯ ಡೈರೆಕ್ಟರಿಯನ್ನು ಪೈಥಾನ್ ಪ್ಯಾಕೇಜ್ ಆಗಿ ಪರಿಗಣಿಸಲು, ಆ ಡೈರೆಕ್ಟರಿಯು __init__.py ಎಂಬ ವಿಶೇಷ ಫೈಲ್ ಅನ್ನು ಹೊಂದಿರಬೇಕು.


ಪ್ಯಾಕೇಜ್ ರಚನೆ

ಒಂದು ವಿಶಿಷ್ಟ ಪ್ಯಾಕೇಜ್ ರಚನೆಯು ಈ ರೀತಿ ಕಾಣಿಸಬಹುದು:

my_app/
├── __init__.py
├── math_ops/
│   ├── __init__.py
│   ├── addition.py
│   └── subtraction.py
└── string_ops/
    ├── __init__.py
    ├── formatting.py
    └── utils.py
- my_app ಒಂದು ಟಾಪ್-ಲೆವೆಲ್ ಪ್ಯಾಕೇಜ್. - math_ops ಮತ್ತು string_ops ಗಳು ಸಬ್-ಪ್ಯಾಕೇಜ್‌ಗಳು. - ಪ್ರತಿಯೊಂದು ಡೈರೆಕ್ಟರಿಯಲ್ಲೂ __init__.py ಫೈಲ್ ಇದೆ, ಇದು ಅವುಗಳನ್ನು ಪ್ಯಾಕೇಜ್‌ಗಳಾಗಿ ಗುರುತಿಸುತ್ತದೆ.


__init__.py ಫೈಲ್‌ನ ಪಾತ್ರ

__init__.py ಫೈಲ್ ಹಲವಾರು ಪ್ರಮುಖ ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ:

1. ಡೈರೆಕ್ಟರಿಯನ್ನು ಪ್ಯಾಕೇಜ್ ಆಗಿ ಗುರುತಿಸುವುದು

__init__.py ಫೈಲ್‌ನ ಇರುವಿಕೆಯೇ ಪೈಥಾನ್‌ಗೆ ಆ ಡೈರೆಕ್ಟರಿಯನ್ನು ಒಂದು ಪ್ಯಾಕೇಜ್ ಎಂದು ಹೇಳುತ್ತದೆ. ಈ ಫೈಲ್ ಖಾಲಿಯಾಗಿದ್ದರೂ ಸಹ, ಅದು ಕೆಲಸ ಮಾಡುತ್ತದೆ. (ಗಮನಿಸಿ: ಪೈಥಾನ್ 3.3 ರಿಂದ, __init__.py ಇಲ್ಲದ ಡೈರೆಕ್ಟರಿಗಳನ್ನು "ನೇಮ್‌ಸ್ಪೇಸ್ ಪ್ಯಾಕೇಜ್‌ಗಳು" ಎಂದು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ಹೊಂದಾಣಿಕೆ ಮತ್ತು ಸ್ಪಷ್ಟತೆಗಾಗಿ __init__.py ಅನ್ನು ಬಳಸುವುದು ಉತ್ತಮ ಅಭ್ಯಾಸ.)

2. ಪ್ಯಾಕೇಜ್ ಇನಿಶಿಯಲೈಸೇಶನ್ ಕೋಡ್ (Package Initialization Code)

ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಮೊದಲ ಬಾರಿಗೆ ಇಂಪೋರ್ಟ್ ಮಾಡಿದಾಗ, __init__.py ಫೈಲ್‌ನಲ್ಲಿರುವ ಕೋಡ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಚಲಿಸುತ್ತದೆ. ಇದನ್ನು ಪ್ಯಾಕೇಜ್-ಲೆವೆಲ್ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ಸೆಟಪ್ ಮಾಡಲು, ಸಂಪರ್ಕಗಳನ್ನು ಸ್ಥಾಪಿಸಲು, ಅಥವಾ ಇತರ ಇನಿಶಿಯಲೈಸೇಶನ್ ಕಾರ್ಯಗಳಿಗಾಗಿ ಬಳಸಬಹುದು.

ಉದಾಹರಣೆ: my_app/__init__.py

print("`my_app` ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಇನಿಶಿಯಲೈಸ್ ಮಾಡಲಾಗುತ್ತಿದೆ...")
VERSION = "1.0.0"

3. ನೇಮ್‌ಸ್ಪೇಸ್ ಅನ್ನು ಸುಲಭಗೊಳಿಸುವುದು (Convenience Imports)

__init__.py ಫೈಲ್ ಬಳಸಿ, ಸಬ್-ಮೊಡ್ಯೂಲ್‌ಗಳಲ್ಲಿರುವ ಪ್ರಮುಖ ಫಂಕ್ಷನ್‌ಗಳು ಅಥವಾ ಕ್ಲಾಸ್‌ಗಳನ್ನು ಟಾಪ್-ಲೆವೆಲ್ ಪ್ಯಾಕೇಜ್ ನೇಮ್‌ಸ್ಪೇಸ್‌ಗೆ ತರಬಹುದು. ಇದರಿಂದ ಬಳಕೆದಾರರು ಸುಲಭವಾಗಿ ಅವುಗಳನ್ನು ಪ್ರವೇಶಿಸಬಹುದು.

ಉದಾಹರಣೆ: my_app/math_ops/__init__.py

# addition.py ಯಿಂದ add ಫಂಕ್ಷನ್ ಅನ್ನು math_ops ನೇಮ್‌ಸ್ಪೇಸ್‌ಗೆ ತರುವುದು
from .addition import add

# subtraction.py ಯಿಂದ subtract ಫಂಕ್ಷನ್ ಅನ್ನು ತರುವುದು
from .subtraction import subtract
ಈಗ, ಬಳಕೆದಾರರು ಈ ರೀತಿ ಇಂಪೋರ್ಟ್ ಮಾಡಬಹುದು:
# from my_app.math_ops.addition import add # ಹೀಗೆ ಮಾಡುವ ಬದಲು
from my_app.math_ops import add, subtract # ಹೀಗೆ ಮಾಡಬಹುದು

result = add(10, 5)


ಪ್ಯಾಕೇಜ್‌ಗಳನ್ನು ಇಂಪೋರ್ಟ್ ಮಾಡುವುದು

ಪ್ಯಾಕೇಜ್‌ನೊಳಗಿನ ಮೊಡ್ಯೂಲ್‌ಗಳನ್ನು ಡಾಟ್ (.) ನೊಟೇಶನ್ ಬಳಸಿ ಇಂಪೋರ್ಟ್ ಮಾಡಲಾಗುತ್ತದೆ.

# 1. ಸಂಪೂರ್ಣ ಮೊಡ್ಯೂಲ್ ಅನ್ನು ಇಂಪೋರ್ಟ್ ಮಾಡುವುದು
import my_app.math_ops.addition
result = my_app.math_ops.addition.add(10, 5)

# 2. from ಬಳಸಿ ಮೊಡ್ಯೂಲ್ ಇಂಪೋರ್ಟ್ ಮಾಡುವುದು
from my_app.math_ops import addition
result = addition.add(10, 5)

# 3. from ಬಳಸಿ ಫಂಕ್ಷನ್ ಇಂಪೋರ್ಟ್ ಮಾಡುವುದು
from my_app.math_ops.addition import add
result = add(10, 5)

ಸಾರಾಂಶದಲ್ಲಿ, ಪ್ಯಾಕೇಜ್‌ಗಳು ಮತ್ತು __init__.py ಫೈಲ್, ಸಂಬಂಧಿತ ಮೊಡ್ಯೂಲ್‌ಗಳನ್ನು ಒಂದು ಕ್ರಮಾನುಗತ ಮತ್ತು ಸಂಘಟಿತ ರೀತಿಯಲ್ಲಿ ಗುಂಪು ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಇದು ದೊಡ್ಡ ಮತ್ತು ಸಂಕೀರ್ಣ ಪೈಥಾನ್ ಪ್ರಾಜೆಕ್ಟ್‌ಗಳ ನಿರ್ವಹಣೆಗೆ ಅತ್ಯಗತ್ಯ.