क्या एक कोशिश को छोड़कर ब्लॉक के साथ संयोजन में "बयान" के साथ अजगर का उपयोग करने का यह सही तरीका है ?:
try:
with open("file", "r") as f:
line = f.readline()
except IOError:
<whatever>
यदि ऐसा है, तो चीजों को करने के पुराने तरीके पर विचार करना:
try:
f = open("file", "r")
line = f.readline()
except IOError:
<whatever>
finally:
f.close()
क्या यहाँ "के साथ" कथन का प्राथमिक लाभ यह है कि हम कोड की तीन पंक्तियों से छुटकारा पा सकते हैं? ऐसा नहीं लगता है कि मुझे इस उपयोग के मामले के लिए मजबूर किया गया है (हालांकि मैं समझता हूं कि "के साथ" बयान के अन्य उपयोग हैं)।
EDIT: क्या कोड के उपरोक्त दो ब्लॉकों की कार्यक्षमता समान है?
EDIT2: पहले कुछ उत्तर आमतौर पर "के साथ" का उपयोग करने के लाभों के बारे में बात करते हैं, लेकिन यहां सीमांत लाभ के बारे में लगता है। हम सभी वर्षों से स्पष्ट रूप से f.close () बुला रहे हैं (या होना चाहिए)। मुझे लगता है कि एक फायदा यह है कि मैला कोडर "के साथ" का उपयोग करने से लाभ होगा।