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

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

`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()

चेतावनी और सीमाएं

विकल्प

  • उचित परीक्षण लिखें - रीलोडिंग के बजाय `pytest` उपयोग करें
  • IPython ऑटोरिलोड - `%autoreload 2` विकास के लिए
  • IDE हॉट रीलोड - PyCharm/VS Code डिबगर्स
  • प्रोसेस रीस्टार्ट - प्रोडक्शन के लिए (systemd, supervisor, k8s)
  1. - Python में कीबोर्ड मॉड्यूल

    इस लेख में, हम Python 3.x या उससे पहले के संस्करणों में कीबोर्ड मॉड्यूल के उपयोग के बारे में सीखेंगे।पसंदीदा IDE - Jupyter नोटबुकइंस्टॉलेशन - pip install keyboardमॉड्यूल की कार्यक्षमताएं -विशिष्ट कुंजियों की कार्रवाई को ब्लॉक करने की अनुमति देता हैहम ऑन-क्लिक लिसनर का उपयोग करके कीबोर्ड से इरादों को

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

    importlib.reload() पहले से आयातित मॉड्यूल को रीलोड करता है। यह इंटरैक्टिव विकास के दौरान उपयोगी होता है जब आप मॉड्यूल कोड बदलते हैं और बिना इंटरप्रेटर रीस्टार्ट किए अपडेटेड वर्जन चाहते हैं। सिंटैक्स import importlib importlib.reload(module_object) उदाहरण >>> import sys >>> import

  1. पायथन getpass मॉड्यूल पायथन getpass मॉड्यूल

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

© कॉपीराइट https://in.wsxdn.com सर्वाधिकार सुरक्षित
समस्याव्याख्या
मौजूदा इंस्टेंस अपडेट नहीं होतेपुराने क्लास परिभाषा का उपयोग करने वाले ऑब्जेक्ट अपडेट नहीं होते
बाहरी रेफरेंस`from module import func` पुराने फ़ंक्शन को संदर्भित करता रहता है
साइड इफेक्ट्समॉड्यूल-स्तरीय कोड फिर से चलता है (कनेक्शन, फ़ाइल हैंडल, आदि)
थ्रेड सुरक्षाथ्रेड-सुरक्षित नहीं