importlib.reload() पहले से आयातित मॉड्यूल को रीलोड करता है। यह इंटरैक्टिव विकास के दौरान उपयोगी होता है जब आप मॉड्यूल कोड बदलते हैं और बिना इंटरप्रेटर रीस्टार्ट किए अपडेटेड वर्जन चाहते हैं।
सिंटैक्स
import importlib
importlib.reload(module_object)
उदाहरण
>>> import sys
>>> import importlib
>>> importlib.reload(sys)
त्रुटि: अनआयातित मॉड्यूल रीलोड करना
>>> import importlib
>>> importlib.reload(sys) # sys आयात नहीं किया गया
NameError: name 'sys' is not defined
रीलोड होने पर क्या होता है?
- मॉड्यूल का कोड पुन: कंपाइल होता है और मॉड्यूल-लेवल कोड पुन: निष्पादित होता है।
- नए ऑब्जेक्ट्स मॉड्यूल के डिक्शनरी में बाइंड होते हैं (समान लोडर का उपयोग करके)।
- इनिट फ़ंक्शन (
__init__पैकेज के लिए) नहीं चलता। - पुराने ऑब्जेक्ट्स तभी रिक्लेम होते हैं जब उनके रेफरेंस काउंट शून्य हो जाएं।
- मॉड्यूल नेमस्पेस में नाम नए ऑब्जेक्ट्स पर अपडेट होते हैं।
- बाहरी रेफरेंसेस (अन्य नेमस्पेस में) स्वचालित रूप से अपडेट नहीं होते - उन्हें मैन्युअली अपडेट करना पड़ता है।
व्यावहारिक उपयोग
# development.py - इंटरैक्टिव सत्र में
import mymodule
import importlib
# कोड बदलने के बाद
importlib.reload(mymodule)
# अब mymodule नए कोड को प्रतिबिंबित करता है
mymodule.new_function()
चेतावनी
- रीलोडिंग जटिल निर्भरताओं वाले मॉड्यूल्स के लिए अप्रत्याशित व्यवहार कर सकता है।
- प्रोडक्शन कोड में रीलोडिंग से बचें; यह मुख्य रूप से डेवलपमेंट/डीबगिंग टूल है।
- बड़े ऐप्स के लिए, रीस्टार्ट या हॉट-रिलोडिंग फ्रेमवर्क्स (जैसे
importlib.util,watchdog) बेहतर हैं।