রিটার্ন স্টেটমেন্টের উদ্দেশ্য কী?


89

রিটার্ন স্টেটমেন্ট কীসের সাধারণ বেসিক ব্যাখ্যা, পাইথনে এটি কীভাবে ব্যবহার করবেন?

এবং এটি এবং printবিবৃতি মধ্যে পার্থক্য কি ?


উত্তর:


100

print()ফাংশন লিখছেন, অর্থাত, "প্রিন্ট", কনসোলে একটি স্ট্রিং। returnবিবৃতি তার আহ্বানকারী একটি মান প্রস্থান করুন এবং হাত পিছনে আপনার ফাংশন ঘটায়। সাধারণভাবে ফাংশনগুলির বিষয় হ'ল ইনপুট গ্রহণ করা এবং কিছু ফিরিয়ে দেওয়া। returnবিবৃতি যখন একটি ফাংশন তার আহ্বানকারী একটি মান ফিরতে প্রস্তুত ব্যবহৃত হয়।

উদাহরণস্বরূপ, এখানে একটি ফাংশন উভয় ব্যবহার এর print()এবং return:

def foo():
    print("hello from inside of foo")
    return 1

এখন আপনি এমন কোড চালাতে পারেন যা foo কে কল করে, যেমন:

if __name__ == '__main__':
    print("going to call foo")
    x = foo()
    print("called foo")
    print("foo returned " + str(x))

আপনি যদি .pyপাইথন ইন্টারপ্রেটারের বিপরীতে স্ক্রিপ্ট হিসাবে (যেমন একটি ফাইল) চালনা করেন তবে আপনি নিম্নলিখিত আউটপুট পাবেন:

going to call foo
hello from inside foo
called foo   
foo returned 1

আমি আশা করি এটি আরও পরিষ্কার হয়ে যায়। দোভাষী অনুবাদকটি কনসোলটিতে রিটার্ন মানগুলি লিখেন যাতে আমি বুঝতে পারি যে কেন কেউ বিভ্রান্ত হতে পারে।

দোভাষী থেকে অন্য উদাহরণ এখানে দেখায় যে:

>>> def foo():
...     print("hello from within foo")
...     return 1
...
>>> foo()
hello from within foo
1
>>> def bar():
...   return 10 * foo()
...
>>> bar()
hello from within foo
10

আপনি দেখতে পাচ্ছেন যে যখন কল foo()করা হবে তখন bar()1 কনসোলে লিখিত হয় না। পরিবর্তে এটি থেকে প্রাপ্ত মান গণনা করতে ব্যবহৃত হয় bar()

print()পার্শ্ব প্রতিক্রিয়া সৃষ্টি করে এমন একটি ফাংশন (এটি কনসোলে একটি স্ট্রিং লিখেছে), তবে পরবর্তী বিবৃতি দিয়ে মৃত্যুদন্ড কার্যকর করা হয় res returnফাংশনটি সম্পাদন বন্ধ করে দেয় এবং এটি যাকে বলে তাকে একটি মান ফিরিয়ে দেয়।


আপনার ব্যবহার করা দরকার "foo returned " + str(x)অন্যথায় আপনি পাবেন TypeError: cannot concatenate 'str' and 'int' objects
অিক্টোফায়ে

@ নাথানহিউজ চিন্তার সাথে রচিত উত্তরটির জন্য ধন্যবাদ।
অ্যান্ডি কে

23

আমি মনে করি অভিধান এখানে আপনার সেরা রেফারেন্স

ফিরুন এবং মুদ্রণ

সংক্ষেপে:

রিটার্ন কিছু ফিরিয়ে দেয় বা ফাংশনটির কলারকে জবাব দেয় যখন মুদ্রণ পাঠ্য উত্পাদন করে


23

মুদ্রণ বিবৃতিটিকে একটি পার্শ্ব-প্রভাবের কারণ হিসাবে ভাবুন , এটি আপনার ফাংশনটিকে কিছু পাঠ্য ব্যবহারকারীর কাছে লিখে দেয়, তবে এটি অন্য ফাংশন দ্বারা ব্যবহার করা যায় না

আমি উইকিপিডিয়া থেকে কয়েকটি উদাহরণ এবং কয়েকটি সংজ্ঞা দিয়ে এটি আরও ভাল করে ব্যাখ্যা করার চেষ্টা করব।

এখানে উইকিপিডিয়া থেকে একটি ফাংশন সংজ্ঞা দেওয়া হয়

গণিতে একটি ফাংশন, একটি পরিমাণকে যুক্ত করে, ফাংশনের যুক্তি, যা ইনপুট হিসাবে পরিচিত, অন্য পরিমাণের সাথে, ফাংশনের মান, আউটপুট হিসাবেও পরিচিত ..

আরেক বারের চিন্তা করুন। আপনি যখন বলবেন যে ফাংশনটির একটি মূল্য আছে তখন এর অর্থ কী?

এর অর্থ হ'ল আপনি কোনও ফাংশনের মানকে স্বাভাবিক মানের সাথে প্রতিস্থাপন করতে পারেন! (দুটি মান একই ধরণের মান হিসাবে ধরে নেওয়া)

আপনি চাইলে কেন চান?

ইনপুট হিসাবে একই ধরণের মান গ্রহণ করতে পারে যে অন্যান্য ফাংশন সম্পর্কে কি ?

def square(n):
    return n * n

def add_one(n):
    return n + 1

print square(12)

# square(12) is the same as writing 144

print add_one(square(12))
print add_one(144)
#These both have the same output

ফাংশনগুলির জন্য একটি অভিনব গাণিতিক শব্দ রয়েছে যা কেবলমাত্র আউটপুট উত্পাদন করতে তাদের ইনপুটগুলির উপর নির্ভর করে: রেফারেনশিয়াল ট্রান্সপারেন্সি। আবার, উইকিপিডিয়া থেকে একটি সংজ্ঞা।

রেফারেনশিয়াল স্বচ্ছতা এবং রেফারেনশিয়াল অস্বচ্ছতা কম্পিউটার প্রোগ্রামগুলির অংশগুলির বৈশিষ্ট্য। কোনও প্রোগ্রামের আচরণ পরিবর্তন না করে যদি এর মান দিয়ে এটি প্রতিস্থাপন করা যায় তবে একটি অভিব্যক্তিটিকে রেফারেন্টালি স্বচ্ছ বলে জানানো হয়

আপনি যদি প্রোগ্রামিংয়ে কেবল নতুন হন তবে এর অর্থ কী তা বোঝা কিছুটা কঠিন হতে পারে তবে আমি মনে করি কিছু পরীক্ষার পরে আপনি এটি পাবেন। যদিও সাধারণভাবে, আপনি কোনও ফাংশনে মুদ্রণের মতো জিনিসগুলি করতে পারেন এবং শেষে আপনার কাছে একটি বিবরণী বিবৃতিও থাকতে পারে।

শুধু মনে রাখবেন যে আপনি যখন রিটার্ন ব্যবহার করবেন আপনি মূলত "এই ফাংশনটিতে একটি কল ফিরে আসবে এমন মান লেখার সমান"

পাইথন আসলে আপনার জন্য একটি রিটার্ন মান সন্নিবেশ করিয়ে দেয় যদি আপনি নিজের নিজের মধ্যে রাখতে অস্বীকার করেন তবে এটিকে "কিছুই নয়" বলা হয় এবং এটি একটি বিশেষ ধরণের যার অর্থ কেবল কিছুই নয় বা নਾਲ।


13

পাইথনে, আমরা "ডিএফ" দিয়ে একটি ফাংশন সংজ্ঞায়িত শুরু করি এবং সাধারণত, "রিটার্ন" দিয়ে ফাংশনটি শেষ করি না।

ভেরিয়েবল এক্স এর একটি ফাংশন f (x) হিসাবে চিহ্নিত করা হয়। এই ফাংশনটি কী করে? মনে করুন, এই ফাংশনটি 2 থেকে x এ যুক্ত করে। সুতরাং, চ (এক্স) = এক্স + 2

এখন, এই ফাংশনের কোডটি হ'ল:

def A_function (x):
    return x + 2

ফাংশনটি সংজ্ঞায়িত করার পরে, আপনি যে কোনও পরিবর্তনশীল জন্য এটি ব্যবহার করতে পারেন এবং ফলাফল পেতে পারেন। যেমন:

print A_function (2)
>>> 4

আমরা কোডটি কিছুটা ভিন্নভাবে লিখতে পারি, যেমন:

def A_function (x):
    y = x + 2
    return y
print A_function (2)

এটি "4 "ও দিত।

এখন, আমরা এমনকি এই কোডটি ব্যবহার করতে পারি:

def A_function (x):
    x = x + 2
    return x
print A_function (2)

এটিও ৪ দেয় See দেখুন, রিটার্নের পাশে থাকা "x" এর অর্থ (x + 2), "A_function (x)" এর x নয়।

আমি এই সহজ উদাহরণ থেকে অনুমান, আপনি রিটার্ন কমান্ড এর অর্থ বুঝতে হবে।


11

return এর অর্থ, "এই ফাংশন থেকে এই মানটি আউটপুট করুন"।

print এর অর্থ, "এই মানটি (সাধারণত) স্টাডআউটে প্রেরণ করুন"

পাইথন আরপিএলে একটি ফাংশন রিটার্ন স্ক্রিনে ডিফল্ট হয়ে যাবে (এটি প্রিন্টের মতো নয়)।

এটি মুদ্রণের একটি উদাহরণ:

>>> n = "foo\nbar" #just assigning a variable. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>

এটি প্রত্যাবর্তনের উদাহরণ:

>>> def getN():
...    return "foo\nbar"
...
>>> getN() #When this isn't assigned to something, it is just output
'foo\nbar'
>>> n = getN() # assigning a variable to the return value. No output
>>> n #the value is output, but it is in a "raw form"
'foo\nbar'
>>> print n #the \n is now a newline
foo
bar
>>>

11

এই উত্তরটি এমন কয়েকটি ক্ষেত্রে যায় যা উপরে আলোচনা করা হয়নি। রিটার্ন এ বক্তব্যে আপনি কি করতে পারবেন বিনষ্ট একটি ফাংশন সঞ্চালনের আগে আপনি শেষে পৌঁছানোর। এর ফলে মৃত্যুদণ্ডের প্রবাহটি তাত্ক্ষণিক কলারে ফিরে আসে।

৪ নং লাইনে:

def ret(n):
    if n > 9:
         temp = "two digits"
         return temp     #Line 4        
    else:
         temp = "one digit"
         return temp     #Line 8
    print("return statement")
ret(10)

শর্তসাপেক্ষ বিবৃতি কার্যকর হওয়ার পরে (লাইন 4) ret()কারণে ফাংশনটি বন্ধ হয়ে যায় return temp। সুতরাংprint("return statement") কার্যকর করা হয় না।

আউটপুট:

two digits   

এই কোডটি শর্তাধীন বিবৃতিগুলির পরে প্রদর্শিত হয় বা নিয়ন্ত্রণের প্রবাহ যে জায়গায় পৌঁছাতে পারে না, তা হ'ল ডেড কোড

রিটার্নিং মান
4 ও 8 লাইনগুলিতে, শর্তটি কার্যকর হওয়ার পরে রিটার্ন স্টেটমেন্টটি অস্থায়ী ভেরিয়েবলের মান ফেরত দিতে ব্যবহৃত হয়।

মুদ্রণ এবং ফেরতের মধ্যে পার্থক্য আনতে :

def ret(n):
    if n > 9:
        print("two digits")
        return "two digits"           
    else :
        print("one digit")
        return "one digit"        
ret(25)

আউটপুট:

two digits
'two digits'

8

শুধু @ নাথন হিউজেসের দুর্দান্ত উত্তরে যুক্ত করতে:

returnবিবৃতি নিয়ন্ত্রণ প্রবাহ এক ধরনের হিসাবে ব্যবহার করা যাবে। returnকোনও ফাংশনের মাঝখানে একটি (বা আরও) বক্তব্য রেখে আমরা বলতে পারি: "এই ফাংশনটি সম্পাদন করা বন্ধ করুন either হয় আমরা যা চেয়েছিলাম তা পেয়েছি বা কিছু ভুল হয়েছে!"

এখানে একটি উদাহরণ:

>>> def make_3_characters_long(some_string):
...     if len(some_string) == 3:
...         return False
...     if str(some_string) != some_string:
...         return "Not a string!"
...     if len(some_string) < 3:
...         return ''.join(some_string,'x')[:,3]
...     return some_string[:,3]
... 
>>> threechars = make_3_characters_long('xyz')    
>>> if threechars:
...     print threechars
... else:
...     print "threechars is already 3 characters long!"
... 
threechars is already 3 characters long!

দেখুন কোড স্টাইল অধ্যায় ব্যবহারের এই ভাবে আরও পরামর্শের জন্য পাইথন গাইডের return


4

"রিটার্ন" এবং "মুদ্রণ" এর মধ্যে পার্থক্য নীচের উদাহরণেও পাওয়া যাবে:

প্রত্যাবর্তন:

def bigger(a, b):
    if a > b:
        return a
    elif a <b:
        return b
    else:
        return a

উপরের কোডটি সমস্ত ইনপুটগুলির জন্য সঠিক ফলাফল দেবে।

ছাপা:

def bigger(a, b):
    if a > b:
        print a
    elif a <b:
        print b
    else:
        print a

দ্রষ্টব্য: এটি অনেক পরীক্ষার ক্ষেত্রে ব্যর্থ হবে।

ত্রুটি:

----  

FAILURE: Test case input: 3, 8.

            Expected result: 8  

FAILURE: Test case input: 4, 3.

            Expected result: 4  

FAILURE: Test case input: 3, 3.

            Expected result: 3  

You passed 0 out of 3 test cases


4
হুঁ, আপনার সরবরাহ করা পরীক্ষাগুলির ক্ষেত্রে আপনার মুদ্রণ কোডটি ব্যর্থ হয়নি। তারা সব ঠিক ছিল!
কোডিংব্রায়ান

4

আমি মনে করি একটি সহজ উত্তর এখানে দরকারী হতে পারে:

returnকলকারী দ্বারা ব্যবহারের জন্য মান (একটি পরিবর্তনশীল, প্রায়শই) উপলভ্য করে তোলে (উদাহরণস্বরূপ, ফাংশনটি যে ফাংশনটির মধ্যে রয়েছে তা দ্বারা সংরক্ষণ করা যেতে পারে return)। ছাড়া return, আপনার মান বা পরিবর্তনশীল কল / পুনরায় ব্যবহারের জন্য কলারের পক্ষে উপলব্ধ হবে না।

print স্ক্রিনে মুদ্রণ করে, তবে কলার দ্বারা ব্যবহারের জন্য মান বা পরিবর্তনশীল উপলব্ধ করে না।

(পুরোপুরি স্বীকার করা যে আরও বিশদ উত্তর আরও নির্ভুল।)


3

এখানে আমার বোঝাপড়া। (আশা করি এটি কাউকে সহায়তা করবে এবং এটি সঠিক)।

def count_number_of(x):
    count = 0
    for item in x:
        if item == "what_you_look_for":
        count = count + 1
    return count

সুতরাং কোডের এই সাধারণ টুকরোটি কোনও কিছুর সংখ্যার সংখ্যাকে গণনা করে। প্রত্যাবর্তনের স্থানটি উল্লেখযোগ্য is এটি আপনার প্রোগ্রামটি জানায় যে আপনার মূল্যটি কোথায় দরকার। সুতরাং আপনি যখন মুদ্রণ করবেন, আপনি স্ক্রিনে আউটপুট প্রেরণ। আপনি ফিরে যখন আপনি কোথাও যেতে মান বলতে। এই ক্ষেত্রে আপনি দেখতে পারেন যে গণনা = 0টি রিটার্নের সাথে ইন্ডেন্টেড হয় - আমরা মানটি (গণনা + 1) 0 প্রতিস্থাপন করতে চাই আপনি যদি রিটার্ন কমান্ড ইনডেন্ট করার পরে কোডটির লজিক অনুসরণ করার চেষ্টা করেন তবে আউটপুট সর্বদা 1 হবে , কারণ আমরা কখনই প্রাথমিক গণনাটি পরিবর্তন করতে বলি না। আমি আশা করি আমি এটা ঠিক পেয়েছি। ওহ, এবং ফিরে আসা সবসময় কোনও ফাংশনের অভ্যন্তরে থাকে।


3

return একটি ফাংশন সংজ্ঞা অংশ, যখন printস্ট্যান্ডার্ড আউটপুটটিতে (সাধারণত কনসোল) পাঠ্য আউটপুট করার ।

একটি ফাংশন হল এমন একটি প্রক্রিয়া যা প্যারামিটারগুলি গ্রহণ করে এবং একটি মান ফেরত দেয়। returnপূর্ববর্তী সঙ্গে হয়, যখন আগের সঙ্গে করা হয় def

উদাহরণ:

def timestwo(x):
    return x*2

2

returnফাংশন সম্পর্কে সর্বোত্তম জিনিস হ'ল আপনি ফাংশন থেকে কোনও মান ফিরিয়ে দিতে পারেন তবে আপনি printপার্থক্যটি কি তাই করতে পারেন ? মূলত returnএটি ফিরিয়ে দেওয়ার বিষয়ে নয়, এটি অবজেক্ট ফর্মের আউটপুট দেয় যাতে আমরা সেই রিটার্নের মানটি কোনও চলক থেকে ফাংশন থেকে সংরক্ষণ করতে পারি তবে আমরা এটি করতে পারি না printকারণ এটির মতো stdout/coutএটি C Programming

আরও ভাল বোঝার জন্য নীচের কোড অনুসরণ করুন

কোড

def add(a, b):
    print "ADDING %d + %d" % (a, b)
    return a + b

def subtract(a, b):
    print "SUBTRACTING %d - %d" % (a, b)
    return a - b

def multiply(a, b):
    print "MULTIPLYING %d * %d" % (a, b)
    return a * b

def divide(a, b):
    print "DIVIDING %d / %d" % (a, b)
    return a / b


print "Let's do some math with just functions!"

age = add(30, 5)
height = subtract(78, 4)
weight = multiply(90, 2)
iq = divide(100, 2)

print "Age: %d, Height: %d, Weight: %d, IQ: %d" % (age, height, weight, iq)


# A puzzle for the extra credit, type it in anyway.
print "Here is a puzzle."

what = add(age, subtract(height, multiply(weight, divide(iq, 2))))

print "That becomes: ", what, "Can you do it by hand?"

আমরা এখন জন্য আমাদের নিজস্ব ম্যাথ ফাংশন করছেন add, subtract, multiply,এবং divide। গুরুত্বপূর্ণ বিষয়টি লক্ষ্য করার জন্য হ'ল সর্বশেষ লাইনটি যেখানে আমরা বলি ফিরে a + b(ইন add)। এটি যা করে তা নিম্নলিখিত:

  1. আমাদের ফাংশন দুটি আর্গুমেন্ট সঙ্গে ডাকা হয়: aএবং b
  2. আমাদের ফাংশনটি কী করছে তা আমরা প্রিন্ট করব, এই ক্ষেত্রে "যোগ করুন D"
  3. তারপরে আমরা পাইথনকে কিছু ধরণের পশ্চাৎ কাজ করতে বলি: আমরা সংযোজনটি ফিরিয়ে দিই a + b। আপনি যত, এই বলতে পারে "আমি যোগ aএবং bতারপর তাদের ফিরে।"
  4. পাইথন দুটি সংখ্যা যুক্ত করে। তারপরে যখন ফাংশনটি শেষ হয়, যে কোনও লাইন এটি চালায় এটি এই a + bপরিবর্তনটিকে একটি ভেরিয়েবলের জন্য নির্ধারণ করতে সক্ষম হবে ।

1

returnপুনরাবিপন্ন ফাংশন / পদ্ধতিগুলির জন্য ব্যবহার করা উচিত বা আপনি আপনার অ্যালগরিদমে পরবর্তী অ্যাপ্লিকেশনগুলির জন্য ফিরে আসা মানটি ব্যবহার করতে চান।

print আপনি যখন ব্যবহারকারীর কাছে একটি অর্থবহ এবং পছন্দসই আউটপুট প্রদর্শন করতে চান তখন ব্যবহার করা উচিত এবং আপনি মধ্যবর্তী ফলাফলের সাথে পর্দা বিশৃঙ্খলা করতে চান না যা ব্যবহারকারী আগ্রহী নয়, যদিও তারা আপনার কোডটি ডিবাগ করার জন্য সহায়ক।

নিম্নলিখিত কোডটি কীভাবে ব্যবহার করতে হবে returnএবং printসঠিকভাবে দেখায় :

def fact(x):
    if x < 2:
        return 1
    return x * fact(x - 1)

print(fact(5))

এই ব্যাখ্যাটি কেবল অজগর নয়, সমস্ত প্রোগ্রামিং ভাষার জন্য সত্য ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.