2011-09-23 9 views
8

का पुराना पुस्तक विवरण मैं Apress, Beginning Python from Novice to Professional पुस्तक का अनुसरण कर रहा हूं। यह उल्लेख किया गया है कि:Try-Except-End स्टेटमेंट

अंत में। यदि आप यह सुनिश्चित करने की ज़रूरत है कि कोड (उदाहरण के लिए, क्लीनअप कोड) को अपवाद उठाया गया है या नहीं, तो आप कोशिश कर सकते हैं। इस कोड को अंततः खंड में रखा गया है। ध्यान दें कि आपके पास क्लॉज को छोड़कर और अंततः क्लॉज को एक ही प्रयास कथन में शामिल नहीं किया जा सकता है- लेकिन आप एक को दूसरे के अंदर रख सकते हैं।

मैं इस कोड की कोशिश की:

def someFunction(): 
    a = None 
    try: 
     a = 1/0 
    except ZeroDivisionError, e: 
     print 'Yesss' 
     print e 
    finally: 
     print 'Cleanup' 
     del a 

if __name__ == '__main__': 
    someFunction() 

... और आउटपुट

Yesss 
integer division or modulo by zero 
Cleanup 

यहाँ है, मैं एक ही try सेगमेंट में except और finally का इस्तेमाल किया है, मुझे नहीं है ? और कोड अपेक्षित के रूप में ठीक काम करता है। मैं कहता हूं कि पुस्तक क्या कहती है!

कोई कृपया स्पष्ट करें। धन्यवाद।

+3

देखें स्वीकृत उत्तर के अनुसार, आपकी पुस्तक पुरानी है। वास्तव में यह 5 साल से अधिक पुराना है। पिछले 5 वर्षों में पाइथन में * बहुत कुछ * बदल गया है। अपने आप को एक पक्ष करो और एक और हालिया किताब खरीदो। – Duncan

+1

यकीन है .. करेंगे :) – bdhar

+0

अपनी सभी पुस्तकों को फेंक दें और सीधे [दस्तावेज़ीकरण] (http://docs.python.org) से काम करें। विशेष रूप से, पायथन के संस्करण को नोट करें जिसके लिए कोई पुस्तक/दस्तावेज़ीकरण लागू होता है। व्हाट्स्यू सूची को स्किम करना सुनिश्चित करें, विशेष रूप से प्रत्येक प्रमुख 2.x या 3.x संस्करण (हालांकि 2.x अब 2.7 पर स्थिर हो गया है, इसलिए यह ऐतिहासिक है)। – smci

उत्तर

14

यह अजगर 2.5 के बाद से निर्धारित किया गया है, और स्पष्ट रूप से documentation

दूसरे शब्दों में में जाना जाता है, अपनी पुस्तक गलत है/तिथि

1

उस किताब गलत हो सकता है से बाहर है, मुझे डर लग रहा, क्योंकि Python documentation सभी तीनों का उपयोग करता है। शायद एक नई किताब पाने का समय है?

6

मेरा मानना ​​है कि किताब वास्तव में उदाहरण देता है, इसलिए मुझे नहीं पता कि उसका क्या मतलब है। पिछले जवाब के रूप में बताया गया है, इस अजगर 2.5 में बदल दिया गया जिससे

try: 
    try: 
     print 'something' 
    except: 
     print 'some weird error' 
finally: 
    print 'finally something 

try: 
    print 'something' 
except: 
    print 'some weird error' 
finally: 
    print 'finally' 
0

के बराबर अजगर 2.4 तक यह सिवाय वरना बयान के साथ अंत में गठबंधन करने के लिए अनुमति नहीं दी गई है। लेकिन चूंकि पाइथन 2.5, अन्य ऑब्जेक्ट उन्मुख प्रोग्रामिंग भाषा की तरह यह ब्लॉक को छोड़कर संयोजन और अंत में ब्लॉक का समर्थन करता है। नवीनतम पायथन दस्तावेज़

संबंधित मुद्दे