क्या अजगर में लूप के लिए `जारी` और` पास` के बीच अंतर है?


274

क्या दो अजगर खोजशब्दों continueऔर passउदाहरणों के बीच कोई महत्वपूर्ण अंतर है

for element in some_list:
    if not element:
        pass

तथा

for element in some_list:
    if not element:
        continue

मुझे पता होना चाहिए?


4
@ S.Lott: उदाहरण: while True:; pass # Busy-wait for keyboard interrupt (Ctrl+C)में अजगर डॉक्स मुझे रास्ते में उलझन में है कि मैं यह स्पष्ट मौसम नहीं मिला यह इस मामले या कुछ और करना था में जारी रखने के लिए बराबर व्यवहार करता है। पहला वाक्य "पास स्टेटमेंट कुछ नहीं करता है।" मेरे प्रश्न के सभी उत्तरों को चिह्नित करता है, लेकिन किसी तरह इसने मेरी आंख को नहीं पकड़ा।
15

जवाबों:


400

हां, वे पूरी तरह से अलग चीजें करते हैं। passबस कुछ नहीं करता है, जबकि continueअगले लूप पुनरावृत्ति के साथ चलता है। आपके उदाहरण में, अंतर स्पष्ट हो जाता है यदि आप के बाद एक और बयान जोड़ते हैं if: निष्पादित करने के बाद pass, इस आगे के बयान को निष्पादित किया जाएगा। के बाद continue, यह नहीं होगा।

>>> a = [0, 1, 2]
>>> for element in a:
...     if not element:
...         pass
...     print element
... 
0
1
2
>>> for element in a:
...     if not element:
...         continue
...     print element
... 
1
2

7
im आपके उत्तर से पूरी तरह सहमत हैं। लेकिन मुझे अभी भी पास कीवर्ड के बारे में सवाल है, क्या इसकी आवश्यकता है? और जरूरत है लेकिन क्यों? धन्यवाद
हार्दिक गज्जर

34
@HardikGajjar: चूँकि passकीवर्ड कुछ भी नहीं करता है, यह केवल तब उपयोगी होता है जब आपको सिंटैक्टली सुइट की आवश्यकता होती है, लेकिन आप कुछ भी नहीं करना चाहते। एक सामान्य उदाहरण यदि आप कुछ अपवादों को अनदेखा करना चाहते हैं, तो आप उपयोग करते हैं except SomeException: pass। कई अन्य उपयोग के मामले भी हैं। इसके लिए आपको कड़ाई से किसी कीवर्ड की आवश्यकता नहीं होगी, क्योंकि आप किसी भी अन्य कथन का उपयोग कर सकते हैं, जो कुछ भी नहीं करता है (जैसे 0एक पूरी तरह से मान्य कथन है जिसका कोई प्रभाव नहीं है), लेकिन इसके लिए एक कीवर्ड होना आपको अनुमति देता है कुछ भी नहीं करने के बारे में अधिक स्पष्ट।
स्वेन मार्नाच

@SvenMarnach यह अपवाद के साथ इलाज करने के लिए स्टाइलिस्ट पर आधारित है pass?
Bjorks नंबर एक प्रशंसक

@ माइकलाइमाइस बिल्कुल नहीं।
मैट एम।

73

हां, वहां एक अंतर है। continueलूप को अगले पुनरावृत्ति पर शुरू करने के लिए मजबूर करता है, जबकि passइसका मतलब है "यहाँ निष्पादित करने के लिए कोई कोड नहीं है" और शेष या लूप बॉडी के माध्यम से जारी रहेगा।

इन्हें चलाएं और अंतर देखें:

for element in some_list:
    if not element:
        pass
    print 1 # will print after pass

for element in some_list:
   if not element:
       continue
   print 1 # will not print after continue

23

continueलूप के शीर्ष पर वापस कूद जाएगा। passप्रसंस्करण जारी रहेगा।

यदि पास लूप के लिए अंत में है, तो अंतर नगण्य है क्योंकि प्रवाह वैसे भी लूप के शीर्ष पर वापस आ जाएगा।


11

आपके उदाहरण में, कोई अंतर नहीं होगा, क्योंकि दोनों कथन लूप के अंत में दिखाई देते हैं। passबस एक प्लेसहोल्डर है, इसमें वह कुछ भी नहीं करता है (यह अगले बयान के लिए निष्पादन को पारित करता है )। continueदूसरी ओर, इसका एक निश्चित उद्देश्य है: यह लूप को जारी रखने के लिए कहता है जैसे कि यह अभी शुरू हुआ था।

for element in some_list:
    if not element:
        pass
    print element  

से बहुत अलग है

for element in some_list:
    if not element:
        continue
    print element

6

उनके बीच एक अंतर है,
continueलूप की वर्तमान पुनरावृत्ति को छोड़ देता है और अगले पुनरावृत्ति को निष्पादित करता है।
passकुछ नहीं करता। यह एक खाली स्टेटमेंट प्लेसहोल्डर है।
मैं आपको एक उदाहरण देना चाहूंगा, जो इसे और बेहतर तरीके से स्पष्ट करेगा।

>>> for element in some_list:
...     if element == 1:
...         print "Pass executed"
...         pass
...     print element
... 
0
Pass executed
1
2

>>> for element in some_list:
...     if element == 1:
...         print "Continue executed"
...         continue
...     print element
... 
0
Continue executed
2

5

हां, वहां एक अंतर है। Continueवास्तव में लूप के वर्तमान पुनरावृत्ति के शेष को छोड़ देता है (शुरुआत में वापस)।Passएक खाली बयान है जो कुछ नहीं करता है।

अजगर डॉक्स देखें



3

पास के लिए अंतर और लूप के लिए जारी है:

तो अजगर में पास क्यों?

यदि आप एक खाली वर्ग, विधि या ब्लॉक बनाना चाहते हैं।

उदाहरण:

class MyException(Exception):
    pass


try:
   1/0
 except:
   pass

उपरोक्त उदाहरणों में 'पास' के बिना IndentationError फेंक देंगे।


1
x = [1,2,3,4] 
for i in x:
    if i==2:
         pass  #Pass actually does nothing. It continues to execute statements below it.
         print "This statement is from pass."
for i in x:
    if i==2:
         continue #Continue gets back to top of the loop.And statements below continue are executed.
         print "This statement is from continue."

आउटपुट है

>>> This statement is from pass.

फिर से, मामूली परिवर्तनों के साथ समान कोड चलाएं।

x = [1,2,3,4]
for i in x:
    if i==2:
       pass  #Pass actually does nothing. It continues to execute statements below it.
    print "This statement is from pass."
for i in x:
    if i==2:
        continue #Continue gets back to top of the loop.And statements below continue are executed.
    print "This statement is from continue."

आउटपुट है -

>>> This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from pass.
This statement is from continue.
This statement is from continue.
This statement is from continue.

पास कुछ भी नहीं करता है। अभिकलन अप्रभावित है। लेकिन जारी रखें अगली गणना के साथ आगे बढ़ने के लिए लूप के शीर्ष पर वापस जाएं।


3
पहले से उपलब्ध अन्य उत्तरों के साथ विशेष अंतर क्या है?
BHUVANESH MOHANKUMAR

1

इस तरह से विचार करें:

उत्तीर्ण करना: पायथन शुद्ध रूप से इंडेंटेशन पर काम करता है! अन्य भाषाओं के विपरीत कोई खाली घुंघराले ब्रेसिज़ नहीं हैं।

इसलिए, यदि आप चाहते हैं कि यदि कोई शर्त सही है तो पास के अलावा कोई विकल्प नहीं है।

जारी रखें: यह केवल लूप के मामले में उपयोगी है। यदि मानों की एक श्रृंखला के लिए, आप लूप के शेष कथनों को निष्पादित नहीं करना चाहते हैं, तो उस विशेष पास के लिए शर्त सही है, तो आपको जारी रखना होगा।


इसलिए, यदि आप कुछ नहीं करना चाहते हैं, तो स्थिति सही है, पास के अलावा कोई विकल्प नहीं है -> यह सटीक नहीं है, उदाहरण के लिए ऊपर स्वेन मार्नाच की टिप्पणी देखें।
पैट्रिक

1
@patrick क्षमा करें, लेकिन वह सही है। इस मामले में, उदाहरण के लिए, एक चर एक फ्लोट और इंट दोनों हो सकता है, और आप सभी ints पर एक ऑपरेशन करना चाहते हैं, तो आप बस एक स्टेटमेंट का उपयोग कर सकते हैं जो फ्लोट्स के लिए जांच करता है, passअगर एक स्टेटमेंट का उपयोग करें Trueऔर यदि यह है तो ऑपरेशन करें False। यह बहुउद्देश्यीय सूचियों की कुशल स्कैनिंग के लिए अनुमति देता है।
1313e

0

passभविष्य के कार्यान्वयन के लिए कुछ खाली फ़ंक्शंस, क्लासेस या लूप्स की आवश्यकता होने पर परिदृश्यों में उपयोग किया जा सकता है, और किसी भी कोड को निष्पादित करने की आवश्यकता नहीं है।
continueपरिदृश्य में प्रयोग किया जाता है जब कोई स्थिति नहीं है जब एक लूप के भीतर मिले हैं और आपको वर्तमान पुनरावृत्ति को छोड़ना होगा और अगले एक पर जाना होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.