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

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

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

चेतावनी संदेश पायथन के मानक पुस्तकालय के 'चेतावनी' मॉड्यूल में परिभाषित चेतावनी () फ़ंक्शन द्वारा प्रदर्शित किए जाते हैं। चेतावनी वास्तव में अंतर्निहित वर्ग पदानुक्रम में अपवाद का एक उपवर्ग है। कई अंतर्निहित चेतावनी उपवर्ग हैं। उपयोगकर्ता परिभाषित उपवर्ग को भी परिभाषित किया जा सकता है।

चेतावनी
यह सभी चेतावनी श्रेणी वर्गों का आधार वर्ग है।
उपयोगकर्ता चेतावनी
चेतावनी के लिए डिफ़ॉल्ट श्रेणी ()।
बहिष्करण चेतावनी
बहिष्कृत सुविधाओं के बारे में चेतावनी जब वे चेतावनियां डेवलपर्स के लिए अभिप्रेत हैं
वाक्यविन्यास चेतावनी
संदिग्ध वाक्यात्मक विशेषताओं के बारे में चेतावनी।
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()

  1. issuperset () पायथन में

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

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

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

  1. पायथन में फ़्लोटिंगपॉइंट एरर अपवाद कैसे पकड़ें?

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