2010-10-07 15 views
7

पायथन में मुझे रिटर्न फ़ंक्शन समझने की प्रतीत नहीं होती है। इसका उपयोग क्यों करें जब मैं इसे प्रिंट कर सकता हूं?पायथन में रिटर्न और प्रिंटिंग के बीच अंतर?

def maximum(x, y): 
    if x > y: 
     print(x) 
    elif x == y: 
     print('The numbers are equal') 
    else: 
     print(y) 

maximum(2, 3) 

यह कोड मुझे 3 देता है। लेकिन वापसी का उपयोग यह वही सटीक बात करता है।

def maximum(x, y): 
    if x > y: 
     return x 
    elif x == y: 
     return 'The numbers are equal' 
    else: 
     return y 

print(maximum(2, 3)) 

तो दोनों के बीच क्या अंतर है? मेगा नोब सवाल के लिए खेद है!

उत्तर

10

यदि आप मुद्रित मूल्य को सहेजने की आवश्यकता है तो आप क्या करेंगे? Have a look at good explanation in docs और सीएफ .:

>>> def ret(): 
    return 42 

>>> def pri(): 
    print(42) 


>>> answer = pri() 
42 
>>> print(answer)   # pri implicitly return None since it doesn't have return statement 
None 
>>> answer = ret() 
>>> answer 
42 

यह भी किसी अन्य भाषा में return बयान से अलग नहीं है।

4

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

print minimum(3, maximum(4, 6)) 

आप maximum उस मामले में उसके परिणाम मुद्रण नहीं हो सकता।

+0

'प्रिंट न्यूनतम (3, अधिकतम (4, 4))' ओ पी के संस्करण में – eumiro

+0

@eumiro :-(काम नहीं करता है: वास्तव में नहीं है RichieHindle के जवाब का मुद्दा? –

+0

@ टिम: रिची का उदाहरण दूसरे ओपी के संस्करण के साथ काम करता है। मेरा नहीं – eumiro

4

याद रखें कि इंटरैक्टिव कमांड लाइन एकमात्र जगह विधियों से नहीं कहा जाएगा। विधियों को अन्य तरीकों से भी बुलाया जा सकता है, और उस स्थिति में print उनके बीच डेटा पास करने का एक उपयोगी तरीका नहीं है

0

ईमानदारी से, यह इस बात पर निर्भर करता है कि आपको क्या करने की आवश्यकता है। यदि फ़ंक्शन विनिर्देश बताता है कि यह अधिकतम अवधि मुद्रित करेगा, तो आपके पास क्या ठीक है। इस तरह की विधि के लिए आम तौर पर क्या होता है यह है कि विधि को वास्तविक मूल्य को वापस करना चाहिए जो बड़ा है। मामले में वे बराबर हैं, इससे कोई फर्क नहीं पड़ता कि कौन सा मूल्य लौटाया गया है।

22

प्वाइंट

वापसी एक समारोह नहीं है। यह एक नियंत्रण प्रवाह निर्माण है (जैसे ifelse संरचनाएं)। यह आपको "फ़ंक्शन कॉल के बीच डेटा ले जाने" देता है।

नीचे तोड़

  • print: उपयोगकर्ता एक आउटपुट स्ट्रिंग के रूप में करने के लिए मूल्य देता है। print(3) उपयोगकर्ता को देखने के लिए स्क्रीन पर '3' एक स्ट्रिंग देगा। कार्यक्रम मूल्य खो देंगे।

  • return: प्रोग्राम पर मान देता है। फ़ंक्शन के कॉलर्स के पास वास्तविक डेटा और डेटा प्रकार (बूल, int, आदि ...) return 3 होगा जहां फ़ंक्शन कहलाता था, उस स्थान पर मूल्य 3 रखा जाएगा।

उदाहरण समय

def ret(): 
    return 3 

def pri(): 
    print(3) 

4 + ret() # ret() is replaced with the number 3 when the function ret returns 
>>> 7 
4 + pri() # pri() prints 3 and implicitly returns None which can't be added 
>>> 3 
>>> TypeError cannot add int and NoneType 
संबंधित मुद्दे