अब तक, मैं आमतौर पर जॉन फ़ूही के जवाब पर एक परिवर्तन का उपयोग किया है - लेकिन इस बिल्कुल सही रूप में एतान बताते हैं नहीं है,: हर कोई आपकी चलाता
assert gender in ('m', 'f')
if gender == 'm':
greeting = 'Mr.'
else:
greeting = 'Ms.'
एक ज़ोर का उपयोग कर के साथ मुख्य समस्या यह है कि अगर -ओ या -ओ फ़्लैग के साथ कोड, आवेषण अनुकूलित हो जाते हैं। जैसा कि एथन नीचे बताता है, इसका मतलब है कि अब आपके पास कोई डेटा चेक नहीं है। आवेषण एक विकास सहायता है और उत्पादन तर्क के लिए उपयोग नहीं किया जाना चाहिए।- मैं बजाय एक चेक() फ़ंक्शन का उपयोग करने की आदत में पाने के लिए जा रहा हूँ यह एक ज़ोर की तरह साफ बुला वाक्य रचना के लिए अनुमति देता है:
def check(condition, msg=None):
if not condition:
raise ValueError(msg or '')
check(gender in ('m', 'f'))
if gender == 'm':
greeting = 'Mr.'
else:
greeting = 'Ms.'
वापस मूल प्रश्न के लिए जा रहे हैं, मैं दावा करता हूँ कि एक का उपयोग कर जोर() या जाँच() करने से पहले यदि/किसी और तर्क पढ़ने में आसान, सुरक्षित, और अधिक स्पष्ट है:
- यह पहली बार उस पर कार्रवाई करने के लिए शुरू करने से पहले डेटा की गुणवत्ता का परीक्षण करती है - यह अगर महत्वपूर्ण हो सकता है अगर/अन्य चेन
- में '==' के अलावा ऑपरेटर हैं, तो यह उन्हें पूछताछ के बजाय, शाखाकरण तर्क से दावा परीक्षण को अलग करता है - वें
शायद इसे "पैट" कहना चाहिए? –
मुझे नहीं लगता कि पहुंचने योग्य कोड इसके लिए सही शब्द है। Http://en.wikipedia.org/wiki/Unreachable_code – Unknown
@ अज्ञात देखें इसके बजाय आप क्या सुझाव देंगे? मुझे पता है कि यह उदाहरण अच्छा नहीं है, क्योंकि अन्य लूप वास्तव में पहुंच योग्य है। लेकिन जैसा भी होता है, यह बिल्कुल "पहुंचने योग्यता का उपाय" है जिसे मैं ढूंढ रहा हूं। – phihag