2015-08-31 8 views
5

प्रोग्रामिंग के लिए बहुत नया है।
आश्चर्य है कि यह उदाहरण सूची में सभी आइटम क्यों प्रिंट करता है, जबकि दूसरा उदाहरण केवल पहला प्रिंट करता है?रिटर्न बनाम प्रिंट सूची

def list_function(x): 
    for y in x: 
     print y 

n = [4, 5, 7] 
list_function(n) 

def list_function(x): 
    for y in x: 
     return y 

n = [4, 5, 7] 
print list_function(n) 
+9

रिटर्न हमेशा एक फ़ंक्शन के निष्पादन को समाप्त करता है। –

+0

यह भी देखें http://stackoverflow.com/q/27502505/4014959 –

+1

मैं इस प्रश्न को उन सभी लोगों के खिलाफ सबूत के रूप में पसंदीदा करने जा रहा हूं जो कहते हैं कि नए प्रोग्रामिंग प्रश्न यहां अच्छी तरह से प्राप्त नहीं हुए हैं या तुरंत डाउनवॉट्स पर ढेर हो जाते हैं। यह बिना किसी डाउनवोट के एक बेहद बुनियादी विषय पर एक अच्छी तरह से लिखित, अच्छी तरह से प्रस्तुत प्रश्न है। –

उत्तर

4

x में प्रत्येक आइटम के माध्यम से आपका पहला उदाहरण दोहराता, स्क्रीन करने के लिए प्रत्येक आइटम मुद्रण। आपका दूसरा उदाहरण x में प्रत्येक आइटम के माध्यम से फिर से शुरू होता है, लेकिन फिर यह पहला होता है, जो उस बिंदु पर फ़ंक्शन के निष्पादन को समाप्त करता है।

का पहला उदाहरण को करीब से देख लेते हैं:

def list_function(x): 
    for y in x: 
     print(y) # Prints y to the screen, then continues on 

n = [4, 5, 7] 
list_function(n) 

समारोह के अंदर, for पाश x से अधिक बार-बार दोहराना शुरू हो जाएगा। पहले y को 4 पर सेट किया गया है, जो मुद्रित है। फिर यह 5 पर सेट किया गया है और मुद्रित किया गया है, फिर 7 और मुद्रित। समारोह के अंदर

def list_function(x): 
    for y in x: 
     return y # Returns y, ending the execution of the function 

n = [4, 5, 7] 
print(list_function(n)) 

, for पाश x से अधिक बार-बार दोहराना शुरू हो जाएगा:

अब दूसरा उदाहरण पर एक नज़र डालें। पहले y को 4 पर सेट किया गया है, जो लौटा दिया गया है। इस बिंदु पर, फ़ंक्शन का निष्पादन रोक दिया गया है और कॉलर को मान वापस कर दिया गया है। y कभी भी 5 या 7 पर सेट नहीं किया गया है। स्क्रीन पर कुछ भी प्रिंट करने का एकमात्र कारण यह है कि इसे print list_function(n) पर कॉल किया जाता है, इसलिए वापसी मूल्य मुद्रित किया जाएगा। यदि आपने इसे पहले उदाहरण में list_function(n) के साथ बुलाया है, तो स्क्रीन पर कुछ भी मुद्रित नहीं किया जाएगा।

+0

धन्यवाद। मैं समझता हूं कि, जो मैं उलझन में हूं, वह तुम्हारा दूसरा वाक्य है .. यह केवल पहला क्यों लौटाता है? – Dude

+0

@Dude, क्योंकि 'वापसी' मान देता है और फिर function_ के निष्पादन को _ _ करता है, जबकि 'प्रिंट' केवल मान प्रिंट करता है। दूसरा कारण मूल्य प्रिंट करता है क्योंकि आप वापसी मूल्य के साथ 'प्रिंट' को कॉल कर रहे हैं। – Cyphase

+0

आह क्षमा करें शब्द "शुरू होता है" नहीं पढ़ा। यह अब समझ में आता है। धन्यवाद – Dude

-1

कार्यों के लिए return निष्पादन को समाप्त करता है, इसलिए वापसी के बाद कुछ भी निष्पादित नहीं किया जाएगा।

आपके मामले में पहला कार्य सभी आइटम प्रिंट करेगा क्योंकि प्रक्रिया को तोड़ने वाला कुछ भी नहीं है। हालांकि दूसरे समारोह में यह वापस करेगा और प्रक्रिया समाप्त करेगा।

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