Advanced Module Usage
Module Import Techniques
Dynamic Importing
## Dynamic module loading
module_name = "math"
imported_module = __import__(module_name)
Conditional Imports
try:
import numpy as np
except ImportError:
print("NumPy not available")
Module Path Management
Sys Path Manipulation
import sys
## Add custom module directory
sys.path.append('/home/user/custom_modules')
Module Inspection
Introspection Techniques
import inspect
## Get module attributes
import math
print(dir(math))
## Check module documentation
print(math.__doc__)
Advanced Import Strategies
graph TD
A[Import Strategies] --> B[Absolute Imports]
A --> C[Relative Imports]
A --> D[Lazy Loading]
Relative Imports
## In package structure
from .submodule import function
from ..parent_module import another_function
Module Reloading
import importlib
## Reload a module dynamically
reloaded_module = importlib.reload(my_module)
| Technique |
Performance Impact |
| Lazy Loading |
Reduces initial load time |
| Selective Importing |
Minimizes memory usage |
| Caching |
Improves repeated access |
Creating Module Packages
Package Structure
mypackage/
│
├── __init__.py
├── module1.py
├── module2.py
└── subpackage/
├── __init__.py
└── submodule.py
Namespace Tricks
## Controlling module namespace
__all__ = ['public_function', 'PublicClass']
def _private_function():
pass
def public_function():
pass
class PublicClass:
pass
Advanced Error Handling
## Custom import error handling
class CustomImportError(ImportError):
def __init__(self, module_name):
self.message = f"Failed to import {module_name}"
Module Decorators
def module_logger(func):
def wrapper(*args, **kwargs):
print(f"Calling function: {func.__name__}")
return func(*args, **kwargs)
return wrapper
@module_logger
def example_function():
pass
LabEx Pro Tip
Mastering advanced module techniques can significantly improve your Python programming efficiency and code organization.
Key Takeaways
- Understand dynamic and conditional importing
- Learn module path manipulation
- Explore module introspection techniques
- Practice package structure design
- Implement smart import strategies