Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में मॉड्यूल रीलोड करना

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) बेहतर हैं।
  1. पायथन getpass मॉड्यूल पायथन getpass मॉड्यूल

    पायथन की स्टैंडर्ड लाइब्रेरी के getpass मॉड्यूल में दो फ़ंक्शन्स परिभाषित हैं। वे तब उपयोगी होते हैं जब भी टर्मिनल-आधारित एप्लिकेशन को यूजर क्रेडेंशियल्स मान्य करने के बाद ही एक्ज़ीक्यूट करने की आवश्यकता होती है। getpass() यह फ़ंक्शन यूजर को पासवर्ड दर्ज करने के लिए प्रेरित करता है। डिफ़ॉल्ट रूप से

  1. - पायथन मॉड्यूल को अन्य मॉड्यूल कॉल करने से कैसे रोकें?

    आप सैंडबॉक्स्ड पायथन (Sandboxed Python) का उपयोग कर सकते हैं। एक सैंडबॉक्स्ड पायथन आपको मॉड्यूल को अनुमति या निषेध करने, निष्पादन स्लाइस सीमित करने, नेटवर्क ट्रैफिक अनुमति/अस्वीकार करने, फाइलसिस्टम एक्सेस को एक विशेष डायरेक्टरी तक सीमित करने (जिसे / के रूप में फ्लोट किया जाता है), और इसी तरह की सुवि

  1. - पायथन मॉड्यूल को अनलोड (रिलोड) कैसे करें?

    `reload(moduleName)` फ़ंक्शन पहले से लोड किए गए मॉड्यूल को रीलोड करता है (यह मानते हुए कि आपने इसे `import moduleName` सिंटैक्स के साथ लोड किया है) बिना स्क्रिप्ट से बाहर निकले। यह बातचीत के लिए अभिप्रेत है, जहां आपने एक मॉड्यूल के लिए सोर्स फ़ाइल संपादित की है और पायथन छोड़े बिना और इसे फिर से शुरू