अगर x खाली होने पर मैं कोई त्रुटि उठाना चाहता हूं तो मैं निम्न की तरह कुछ कर सकता हूं:

x = ...
if not x: raise SomeException(...)

या:

assert x, "Some Exception"

मेरा प्रश्न यह है कि क्या तार्किक कथन के हिस्से के रूप में अपवाद/दावा करना संभव है या क्या यह पायथन सिंटैक्स का हिस्सा है कि इसका अपना अलग बयान होना चाहिए, इससे मेरा मतलब कुछ ऐसा करना है:

z = x**2 or raise SomeException("Value cannot be zero")

या:

z = x**2 or assert x...

या:

z = x**2, assert ...

या ऐसा करने का जो भी तरीका हो, मुझे आशा है कि मेरा इरादा स्पष्ट है। क्या पाइथन में ऐसा करना संभव है?

2
carl.hiass 28 मार्च 2021, 23:39
नहीं, raise और assert दोनों ही कथन हैं, उन्हें इस तरह के व्यंजकों के भाग के रूप में नहीं जोड़ा जा सकता है।
 – 
juanpa.arrivillaga
29 मार्च 2021, 14:57
पायथन रूबी नहीं है। पायथन फैंसी सिंटैक्स के लिए पठनीयता को प्राथमिकता देता है...
 – 
Serge Ballesta
29 मार्च 2021, 15:08

1 उत्तर

सबसे बढ़िया उत्तर

पायथन में वाक्यविन्यास अमान्य है। आप क्या कर सकते हैं एक ऐसा फ़ंक्शन बनाएं जो किसी दिए गए गणना की जांच करता है और निम्नानुसार अपवाद/जोर देता है:

def test_and_raise(result):
    if not result:
        raise SomeException("Some text")

    return result


z = test_and_raise(x**2)

यदि आप चाहते हैं कि आप इसे उस प्रकार के अपवाद को निर्दिष्ट करने के लिए बढ़ा सकते हैं जिसे आप फेंकना चाहते हैं:

def test_and_raise(result, exception_type):
    if not result:
        raise exception_type("Some text")

    return result


z = test_and_raise(x**2, AssertionError)

एक चेतावनी हालांकि, आपको इस बात से अवगत होना चाहिए कि जब भी परिणाम 0, कोई नहीं या गलत होगा तो अपवाद उठाया जाएगा, इसलिए गलत उपयोग से आप अवांछित व्यवहार का सामना कर सकते हैं

1
NirO 5 अप्रैल 2021, 17:19
3
"दुर्भाग्य से यह वाक्यविन्यास अजगर में अमान्य है।" मैं कहूंगा, सौभाग्य से यह वाक्यविन्यास अमान्य है
 – 
juanpa.arrivillaga
29 मार्च 2021, 14:57