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

Python प्रोग्राम में चेतावनी नियंत्रण


चेतावनी प्रोग्राम में त्रुटि से अलग है। यदि त्रुटि का सामना करना पड़ता है, तो Python प्रोग्राम तुरंत समाप्त हो जाता है। दूसरी ओर चेतावनी घातक नहीं है। यह कुछ संदेश प्रदर्शित करता है लेकिन प्रोग्राम जारी रहता है। चेतावनी उपयोगकर्ता को कुछ शर्तों के प्रति सचेत करने के लिए जारी की जाती है जो बिल्कुल अपवाद नहीं हैं। आमतौर पर चेतावनी तब दिखाई देती है जब किसी प्रोग्रामिंग तत्व जैसे कीवर्ड/फ़ंक्शन/क्लास आदि के कुछ अप्रचलित उपयोग पाए जाते हैं।

चेतावनी संदेश Python के मानक लाइब्रेरी के 'warning' मॉड्यूल में परिभाषित warn() फ़ंक्शन द्वारा प्रदर्शित किए जाते हैं। चेतावनी वास्तव में बिल्ट-इन क्लास पदानुक्रम में Exception का एक उपवर्ग है। कई बिल्ट-इन चेतावनी उपवर्ग हैं। उपयोगकर्ता-परिभाषित उपवर्ग भी परिभाषित किए जा सकते हैं।

Warning सभी चेतावनी श्रेणी क्लास का बेस क्लास।
UserWarning warn() के लिए डिफ़ॉल्ट श्रेणी।
DeprecationWarning अप्रचलित सुविधाओं के बारे में चेतावनी जब वे चेतावनी डेवलपर्स के लिए अभिप्रेत हैं
SyntaxWarning संदिग्ध सिंटैक्टिक सुविधाओं के बारे में चेतावनी।
RuntimeWarning संदिग्ध रनटाइम सुविधाओं के बारे में चेतावनी।
FutureWarning अप्रचलित सुविधाओं के बारे में चेतावनी जब वे चेतावनी अंतिम उपयोगकर्ताओं के लिए अभिप्रेत हैं।
PendingDeprecationWarning भविष्य में अप्रचलित होने वाली सुविधाओं के बारे में चेतावनी
ImportWarning मॉड्यूल आयात करने की प्रक्रिया के दौरान ट्रिगर की गई चेतावनी
UnicodeWarning Unicode से संबंधित चेतावनी।
BytesWarning बाइट्स और बाइट एरे से संबंधित चेतावनी।
ResourceWarning संसाधन उपयोग से संबंधित चेतावनी।

चेतावनी उदाहरण

निम्नलिखित कोड एक अप्रचलित मेथड और एक मेथड के साथ एक क्लास को परिभाषित करता है जिसे उक्त क्लास के भविष्य के संस्करण में अप्रचलित करने के लिए निर्धारित किया गया है।

# warningexample.py
import warnings

class WarnExample:
    def __init__(self):
        self.text = "Warning"
    
    def method1(self):
        warnings.warn(
            "method1 is deprecated, use new_method instead",
            DeprecationWarning
        )
        print('method1', len(self.text))
    
    def method2(self):
        warnings.warn(
            "method2 will be deprecated in version 2, use new_method instead",
            PendingDeprecationWarning
        )
        print('method2', len(self.text))
    
    def new_method(self):
        print('new method', len(self.text))

if __name__ == '__main__':
    e = WarnExample()
    e.method1()
    e.method2()
    e.new_method()

यदि उपरोक्त स्क्रिप्ट को कमांड प्रॉम्प्ट से निष्पादित किया जाता है जैसे

E:\python37>python warningexample.py

टर्मिनल पर कोई चेतावनी संदेश प्रदर्शित नहीं होता। उसके लिए आपको _Wd स्विच का उपयोग करना होगा जैसे नीचे

E:\python37>python -Wd warningexample.py
warningexample.py:10: DeprecationWarning: method1 is deprecated, use new_method instead
DeprecationWarning method1 7
warningexample.py:19: PendingDeprecationWarning: method2 will be deprecated in version 2, use new_method instead
PendingDeprecationWarning method2 7
new method 7

इसी तरह, निम्नलिखित इंटरैक्टिव सत्र भी कोई चेतावनी संदेश नहीं दिखाता।

E:\python37>python
>>> from warningexample import WarnExample
>>> e = WarnExample()
>>> e.method1()
method1 7
>>> e.method2()
method2 7
>>> e.new_method()
new method 7

आपको Python सत्र को -Wd के साथ शुरू करना होगा

E:\python37>python -Wd
>>> from warningexample import WarnExample
>>> e = WarnExample()
>>> e.method1()
E:\python37\warningexample.py:10: DeprecationWarning: method1 is deprecated, use new_method instead
DeprecationWarning method1 7
>>> e.method2()
E:\python37\warningexample.py:17: PendingDeprecationWarning: method2 will be deprecated in version 2, use new_method instead
PendingDeprecationWarning method2 7
>>> e.new_method()
new method 7

चेतावनी फ़िल्टर

चेतावनी फ़िल्टर नियंत्रित करता है कि चेतावनियों को नजरअंदाज किया जाए, प्रदर्शित किया जाए, या त्रुटियों में बदल दिया जाए (अपवाद उठाना)।

कार्रवाई अर्थ
error चेतावनी को अपवाद में बदलें।
ignore चेतावनी को त्यागें।
always हमेशा चेतावनी उत्सर्जित करें।
default प्रत्येक स्थान से पहली बार उत्पन्न होने पर चेतावनी प्रिंट करें।
module प्रत्येक मॉड्यूल से पहली बार उत्पन्न होने पर चेतावनी प्रिंट करें।
once पहली बार उत्पन्न होने पर चेतावनी प्रिंट करें।

निम्नलिखित इंटरैक्टिव सत्र simplefilter() फ़ंक्शन द्वारा फ़िल्टर को डिफ़ॉल्ट पर सेट करता है।

E:\python37>python
>>> import warnings
>>> warnings.simplefilter('default')
>>> from warningexample import WarnExample
>>> e = WarnExample()
>>> e.method1()
E:\python37\warningexample.py:10: DeprecationWarning: method1 is deprecated, use new_method instead
DeprecationWarning method1 7
>>> e.method2()
E:\python37\warningexample.py:17: PendingDeprecationWarning: method2 will be deprecated in version 2, use new_method instead
PendingDeprecationWarning method2 7
>>> e.new_method()
new method 7

चेतावनियों को अस्थायी रूप से दबाने के लिए, simplefilter को 'ignore' पर सेट करें।

import warnings
def function():
    warnings.warn("deprecated", DeprecationWarning)
with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    function()

  1. पायथन में issuperset() फंक्शन पायथन में issuperset() फंक्शन

    इस लेख में, हम पायथन में issuperset() और विभिन्न क्षेत्रों में इसके कार्यान्वयन के बारे में जानेंगे।यह मेथड बूलियन True वापस करता है यदि सेट B के सभी तत्व सेट A के सभी तत्वों को समाहित करते हैं जिसे तर्क के रूप में पारित किया जाता है और झूठा वापस करता है यदि A के सभी तत्व B में मौजूद नहीं हैं।इसका म

  1. - पायथन नेमस्पेस्ड पैकेज के साथ प्रोग्राम कैसे विकसित करें?

    पायथन में, एक नेमस्पेस पैकेज आपको पायथन कोड को कई प्रोजेक्ट्स में फैलाने की अनुमति देता है। यह तब उपयोगी होता है जब आप संबंधित लाइब्रेरी को अलग-अलग डाउनलोड के रूप में जारी करना चाहते हैं। उदाहरण संरचना PYTHONPATH में `Package-1` और `Package-2` डायरेक्टरी के साथ: Package-1/namespace/__init__.py Pack

  1. - पायथन में FloatingPointError एक्सेप्शन कैसे पकड़ें?

    FloatingPointError उन फ्लोटिंग पॉइंट ऑपरेशन्स द्वारा उठाया जाता है जिनके परिणामस्वरूप एरर्स होते हैं, जब फ्लोटिंग पॉइंट एक्सेप्शन कंट्रोल (fpectl) चालू होता है। fpectl को सक्षम करने के लिए --with-fpectl फ्लैग के साथ कंपाइल किए गए इंटरप्रेटर की आवश्यकता होती है। दिए गए कोड को एक्सेप्शन हैंडल करने और