यदि आप एक मॉड्यूल संशोधित कर रहे हैं और हर बार उस मॉड्यूल को सेव करने पर शेल रीस्टार्ट किए बिना इंटरप्रेटर में इसका परीक्षण करना चाहते हैं, तो आप `reload(moduleName)` फ़ंक्शन का उपयोग कर सकते हैं। `reload(moduleName)` पहले से लोड किए गए मॉड्यूल को रीलोड करता है (यह मानते हुए कि आपने इसे `"import moduleName"` सिंटैक्स के साथ लोड किया है)। यह बातचीत के लिए अभिप्रेत है, जहां आपने एक मॉड्यूल के लिए सोर्स फ़ाइल संपादित की है और पायथन छोड़े बिना और इसे फिर से शुरू किए बिना इसका परीक्षण करना चाहते हैं।
उदाहरण
>> import mymodule
>>> # mymodule संपादित किया और इस स्क्रिप्ट में रीलोड करना चाहते हैं
>>> reload(mymodule)
महत्वपूर्ण नोट्स
- मॉड्यूलनाम मॉड्यूल का वास्तविक नाम है, उसके नाम वाली स्ट्रिंग नहीं
- पायथन 3 में, `reload` को बिल्टइन्स से `imp` में स्थानांतरित कर दिया गया था
- पायथन 3 में `reload` का उपयोग करने के लिए, आपको `imp.reload(moduleName)` लिखना होगा न कि केवल `reload(moduleName)`
पायथन 3 में आधुनिक तरीका
import importlib
import mymodule
# मॉड्यूल संपादित करने के बाद
importlib.reload(mymodule)
पायथन 3.4+ के लिए importlib.reload
import importlib
import sys
# यदि मॉड्यूल sys.modules में है
if 'mymodule' in sys.modules:
importlib.reload(sys.modules['mymodule'])
चेतावनी
- रीलोडिंग सभी रेफरेंस अपडेट नहीं करता - पुराने ऑब्जेक्ट रेफरेंस करने वाले कोड को मैन्युअल अपडेट की आवश्यकता होती है
- क्लास परिभाषाएं रीलोड होती हैं लेकिन मौजूदा इंस्टेंस पुराने क्लास का उपयोग करते रहते हैं
- मॉड्यूल-स्तरीय कोड फिर से निष्पादित होता है (साइड इफेक्ट्स संभव)
- प्रोडक्शन कोड में रीलोडिंग से बचें - केवल विकास/डिबगिंग के लिए
बेहतर विकास कार्यप्रवाह
- ऑटो-रीलोड के लिए
pytest --pdbयाipython --auto-reloadउपयोग करें - IDE डिबगर्स (VS Code, PyCharm) हॉट रीलोडिंग का समर्थन करते हैं
- उचित परीक्षण लिखें बजाय मैन्युअल रीलोडिंग के