चेतावनी किसी प्रोग्राम में त्रुटि से भिन्न होती है। यदि त्रुटि का सामना करना पड़ता है, तो पायथन प्रोग्राम तुरंत समाप्त हो जाता है। दूसरी ओर चेतावनी घातक नहीं है। यह कुछ संदेश प्रदर्शित करता है लेकिन कार्यक्रम जारी रहता है। कुछ शर्तों के बारे में उपयोगकर्ता को सचेत करने के लिए चेतावनियां जारी की जाती हैं जो बिल्कुल अपवाद नहीं हैं। आम तौर पर चेतावनी तब दिखाई देती है जब कुछ प्रोग्रामिंग तत्व जैसे कीवर्ड/फ़ंक्शन/क्लास इत्यादि का कुछ बहिष्कृत उपयोग पाया जाता है।
चेतावनी संदेश पायथन के मानक पुस्तकालय के 'चेतावनी' मॉड्यूल में परिभाषित चेतावनी () फ़ंक्शन द्वारा प्रदर्शित किए जाते हैं। चेतावनी वास्तव में अंतर्निहित वर्ग पदानुक्रम में अपवाद का एक उपवर्ग है। कई अंतर्निहित चेतावनी उपवर्ग हैं। उपयोगकर्ता परिभाषित उपवर्ग को भी परिभाषित किया जा सकता है।
चेतावनी | यह सभी चेतावनी श्रेणी वर्गों का आधार वर्ग है। |
उपयोगकर्ता चेतावनी | चेतावनी के लिए डिफ़ॉल्ट श्रेणी ()। |
बहिष्करण चेतावनी | बहिष्कृत सुविधाओं के बारे में चेतावनी जब वे चेतावनियां डेवलपर्स के लिए अभिप्रेत हैं |
वाक्यविन्यास चेतावनी | संदिग्ध वाक्यात्मक विशेषताओं के बारे में चेतावनी। |
RuntimeWarning | संदिग्ध रनटाइम सुविधाओं के बारे में चेतावनी। |
भविष्य की चेतावनी | बहिष्कृत सुविधाओं के बारे में चेतावनियां जब वे चेतावनियां अंतिम उपयोगकर्ताओं के लिए अभिप्रेत हैं। |
PendingDeprecationWarning | उन सुविधाओं के बारे में चेतावनियां जिन्हें भविष्य में बंद कर दिया जाएगा |
ImportWarning | मॉड्यूल आयात करने की प्रक्रिया के दौरान ट्रिगर होने वाली चेतावनियां |
UnicodeWarning | यूनिकोड से संबंधित चेतावनियां। |
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
आपको -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
चेतावनी फ़िल्टर
चेतावनी फ़िल्टर नियंत्रित करता है कि क्या चेतावनियों को अनदेखा किया गया है, प्रदर्शित किया गया है, या त्रुटियों में बदल दिया गया है (अपवाद उठाते हुए)।
कार्रवाई वें> <वें शैली ="पाठ-संरेखण:केंद्र;" चौड़ाई ="288">अर्थ वें> | |
---|---|
त्रुटि | चेतावनी को अपवाद में बदल दें। |
अनदेखा करें | चेतावनी त्यागें। |
हमेशा | हमेशा एक चेतावनी दें। |
डिफ़ॉल्ट | प्रत्येक स्थान से पहली बार चेतावनी उत्पन्न होने पर उसे प्रिंट करें। |
मॉड्यूल | प्रत्येक मॉड्यूल से पहली बार चेतावनी उत्पन्न होने पर उसे प्रिंट करें। |
एक बार | चेतावनी के पहली बार जनरेट होने पर उसे प्रिंट करें। |
निम्नलिखित इंटरैक्टिव सत्र 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 को 'अनदेखा' करने के लिए सेट करें।
import warnings def function(): warnings.warn("deprecated", DeprecationWarning) with warnings.catch_warnings(): warnings.simplefilter("ignore") function()