পাইথন ফাংশন একাধিক মান ফেরত দিতে পারে। এই মানগুলি সরাসরি ভেরিয়েবলগুলিতে সংরক্ষণ করা যেতে পারে। একটি ফাংশন একটি ভেরিয়েবল প্রদানের জন্য সীমাবদ্ধ নয়, এটি শূন্য, এক, দুই বা ততোধিক মান প্রদান করতে পারে।
এটি একাধিক মান/ভেরিয়েবল ফেরত দেওয়ার জন্য পাইথনের ডিফল্ট বৈশিষ্ট্য যা C++ বা Java এর মতো অন্যান্য প্রোগ্রামিং ভাষায় পাওয়া যায় না।
একটি ফাংশন থেকে একাধিক মান ফেরত দেওয়ার জন্য, আমরা আমাদের প্রয়োজন অনুযায়ী টিপল, তালিকা বা অভিধান বস্তু ফেরত দিতে পারি।
পদ্ধতি 1:টিপল ব্যবহার করা
def func(x): y0 = x+ 1 y1 = x * 3 y2 = y0 ** 3 return (y0, y1, y2)
যাইহোক, উপরের প্রোগ্রামটি সমস্যাযুক্ত হয়ে ওঠে কারণ ফেরত মানের সংখ্যা বৃদ্ধি পায়। যদি আমরা ছয় বা সাতটি মান ফেরত দিতে চাই? অবশ্যই, আমরা তাদের টুপলিং চালিয়ে যেতে পারি, তবে কোন মানটি কোথায় তা ভুলে যাওয়া সহজ হয়। এছাড়াও যেখানেই আমরা সেগুলি পেতে চাই সেগুলিকে আনপ্যাক করতে কিছুটা অগোছালো হয়ে যায়৷
পদ্ধতি 2:একটি অভিধান ব্যবহার করা
আরেকটি ভালো সমাধান হল অভিধান ব্যবহার করা।
def func(x): y0 = x+ 1 y1 = x * 3 y2 = y0 ** 3 return {'y0': y0, 'y1': y1, 'y2': y2}
এখন, আমাদের কাছে একটি প্রক্রিয়া রয়েছে যার মাধ্যমে আমরা প্রত্যাবর্তিত বস্তুর একটি নির্দিষ্ট সদস্যকে প্রজেক্ট করতে পারি।
যেমন −
result[‘y1’]
পদ্ধতি 3:একটি ক্লাস ব্যবহার করা
আরেকটি বিকল্প হল ক্লাস ব্যবহার করা, যেখানে আমরা একটি বিশেষ কাঠামো ফিরিয়ে দিতে পারি।
class ReturnValue(obj): def __init__(self, y0, y1, y2): self.y0 = y0 self.y1 = y1 self.y2 = y2 def g(x): y0 = x + 1 y1 = x * 3 y2 = y0 ** 3 return ReturnValue (y0, y1, y2)
পদ্ধতি 4:একটি তালিকা ব্যবহার করা
আরেকটি পদ্ধতি হল একটি তালিকা ব্যবহার করা।
def func(x): result = [x + 1] result.append(x * 3) result.append(y0 ** 3) return result
পদ্ধতি 5:জেনারেটর ব্যবহার করা
আমরা একের পর এক একাধিক মান ফেরত দেওয়ার জন্য ফলন ব্যবহার করার এই বিকল্পটি বেছে নিতে পারি, যদি আমাদের প্রচুর সংখ্যক মান ফেরত দিতে হয় তাহলে সিকোয়েন্স ব্যবহার করলে প্রচুর সিস্টেম সংস্থান খরচ হতে পারে।
def func(x): y0 = x + 1 yield y0 yield x * 3 yield y0 ** 3
কোন পদ্ধতিতে একটি ফাংশন থেকে একাধিক মান ফেরত দেওয়া ভাল?
এটি সব আপনার স্বাদ বা প্রয়োজনের উপর নির্ভর করে, আপনি কোন পদ্ধতিটি বেশি পছন্দ করেন। আপনি - অভিধানের রুটটি বেছে নিতে পারেন কারণ এতে কম সেট-আপ কাজ জড়িত। অথবা আপনি বেছে নিতে পারেন – ক্লাস রুট কারণ এটি আপনাকে অভিধানের প্রতিনিধিত্ব করে এমন বিভ্রান্তি এড়াতে সাহায্য করতে পারে। অথবা আপনি একের পর এক মান দিতে জেনারেটর বেছে নিতে পারেন।