2010-03-17 30 views
17

निम्नलिखित अजगर कोड में:पायथन: 'ब्रेक' के बाहर पाश

narg=len(sys.argv) 
print "@length arg= ", narg 
if narg == 1: 
     print "@Usage: input_filename nelements nintervals" 
     break 

मैं:

SyntaxError: 'break' outside loop 

क्यों?

+2

क्या आपको लगता है कि 'break' यहाँ करता है? आप क्या होने की उम्मीद करते हैं? –

+2

ऑप्टपर मॉड्यूल (या इसी तरह) पार्सिंग argv को बहुत आसान बना देगा। http://docs.python.org/library/optparse.html –

उत्तर

39

क्योंकि तोड़ने को तोड़ने के लिए एक अगर नहीं किया जा सकता - यह केवल छोरों से बाहर तोड़ सकते हैं। इस तरह पाइथन (और अधिकतर अन्य भाषाओं) व्यवहार करने के लिए निर्दिष्ट हैं।

तुम क्या करने कोशिश कर रहे हैं? शायद आप sys.exit() या return बजाय इस्तेमाल करना चाहिए?

+1

और कैसे मैं इतना स्क्रिप्ट कर सकता है यहाँ बंद हो जाता है? – flow

+5

'sys.exit() 'तुरंत प्रोग्राम को समाप्त करता है। –

+1

'सिस्टमएक्सिट बढ़ाएं' कार्यक्रम को समाप्त करता है; यदि आप फ़ंक्शन कॉल पसंद करते हैं, तो sys.exit() 'इसे उठाता है। – tzot

2

क्योंकि ब्रेक बयान छोरों से बाहर तोड़ करने का इरादा है। आपको किसी कथन से बाहर निकलने की आवश्यकता नहीं है - यह अंत में समाप्त होता है।

2

क्योंकि ब्रेक केवल एक पाश के अंदर इस्तेमाल किया जा सकता। इसका उपयोग लूप से बाहर करने के लिए किया जाता है (लूप को रोकें)।

0

break एक लूप से बाहर तोड़ता है, if कथन नहीं, जैसा कि अन्य ने बताया है। इसके लिए प्रेरणा देखना मुश्किल नहीं है; जैसे

for item in some_iterable: 
    ... 
    if break_condition(): 
     break 

break कोड के बारे में सोचना बहुत बेकार अगर यह if ब्लॉक समाप्त बजाय पाश तोड़ने होगा। विचार करें कि मैं एक मामला है कि आप अगर बयान पाश को तोड़ने के लिए है, तो बयान में है किसी भी तरह से, लेकिन एक के अंदर तोड़ने का उपयोग करें के बारे में सोच नहीं कर सकते।