`reload(moduleName)` फ़ंक्शन पहले से लोड किए गए मॉड्यूल को रीलोड करता है (यह मानते हुए कि आपने इसे `"import moduleName"` सिंटैक्स के साथ लोड किया है) बिना स्क्रिप्ट से बाहर निकले। यह बातचीत के लिए अभिप्रेत है, जहां आपने एक मॉड्यूल के लिए सोर्स फ़ाइल संपादित की है और पायथन छोड़े बिना और इसे फिर से शुरू किए बिना इसका परीक्षण करना चाहते हैं।
उदाहरण
>>> import mymodule
>>> # mymodule संपादित किया और इस स्क्रिप्ट में रीलोड करना चाहते हैं
>>> reload(mymodule)
महत्वपूर्ण नोट्स
- मॉड्यूलनाम मॉड्यूल का वास्तविक नाम है, उसके नाम वाली स्ट्रिंग नहीं
- पायथन 3 में, `reload` को बिल्टइन्स से `imp` में स्थानांतरित कर दिया गया था
- पायथन 3 में `reload` का उपयोग करने के लिए, आपको `imp.reload(moduleName)` लिखना होगा न कि केवल `reload(moduleName)`
पायथन 3 में आधुनिक तरीका: importlib.reload
import importlib
import mymodule
# मॉड्यूल संपादित करने के बाद
importlib.reload(mymodule)
पायथन डॉक्स के अनुसार reload व्यवहार
- पायथन मॉड्यूल का कोड पुनः संकलित होता है और मॉड्यूल-स्तरीय कोड पुनः निष्पादित होता है, जो मॉड्यूल के डिक्शनरी में नामों से बंधे ऑब्जेक्ट्स का एक नया सेट परिभाषित करता है
- एक्सटेंशन मॉड्यूल की init फ़ंक्शन को दूसरी बार कॉल नहीं किया जाता
- मॉड्यूल नेमस्पेस में नाम किसी भी नए या बदले हुए ऑब्जेक्ट्स को इंगित करने के लिए अपडेट किए जाते हैं
- पुराने ऑब्जेक्ट्स के अन्य रेफरेंस (जैसे मॉड्यूल के बाहर के नाम) नए ऑब्जेक्ट्स को रीबाउंड करने के लिए रीबाउंड नहीं होते - यदि वांछित है तो प्रत्येक नेमस्पेस में मैन्युअली अपडेट किया जाना चाहिए
व्यावहारिक उदाहरण
# config.py - संपादन योग्य कॉन्फ़िगरेशन
DEBUG = True
API_URL = "https://api.example.com"
# main.py
import config
import importlib
def reload_config():
importlib.reload(config)
print(f"DEBUG: {config.DEBUG}")
print(f"API_URL: {config.API_URL}")
# config.py संपादित करें, फिर:
reload_config()
चेतावनी और सीमाएं
| समस्या | व्याख्या |
|---|---|
| मौजूदा इंस्टेंस अपडेट नहीं होते | पुराने क्लास परिभाषा का उपयोग करने वाले ऑब्जेक्ट अपडेट नहीं होते |
| बाहरी रेफरेंस | `from module import func` पुराने फ़ंक्शन को संदर्भित करता रहता है |
| साइड इफेक्ट्स | मॉड्यूल-स्तरीय कोड फिर से चलता है (कनेक्शन, फ़ाइल हैंडल, आदि) |
| थ्रेड सुरक्षा | थ्रेड-सुरक्षित नहीं |