ಪ್ಯಾಕೇಜ್ಗಳು ಮತ್ತು __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
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 ಫೈಲ್, ಸಂಬಂಧಿತ ಮೊಡ್ಯೂಲ್ಗಳನ್ನು ಒಂದು ಕ್ರಮಾನುಗತ ಮತ್ತು ಸಂಘಟಿತ ರೀತಿಯಲ್ಲಿ ಗುಂಪು ಮಾಡಲು ಸಹಾಯ ಮಾಡುತ್ತವೆ, ಇದು ದೊಡ್ಡ ಮತ್ತು ಸಂಕೀರ್ಣ ಪೈಥಾನ್ ಪ್ರಾಜೆಕ್ಟ್ಗಳ ನಿರ್ವಹಣೆಗೆ ಅತ್ಯಗತ್ಯ.