> For the complete documentation index, see [llms.txt](https://python.howtocode.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://python.howtocode.dev/function-and-module/function-return.md).

# ফাংশন রিটার্ন

এ পর্যন্ত আমরা বুঝতে পেরেছি ফাংশন কি (মেশিন), কেনই বা ফাংশন ব্যবহার করবো (কোড এর পুনব্যবহার), ফাংশনের আর্গুমেন্ট (ইনপুট) ইত্যাদি। মনে আছে, আমরা ফাংশনকে কেক বানানোর মেশিন এর সাথে তুলনা করেছিলাম? অর্থাৎ কোন একটি ফাংশন তার বডির মধ্যে কিছু কাজ করে চুপ চাপ থাকতে পারে অথবা কোন কিছু রিটার্নও দিতে পারে। কাকে রিটার্ন দিবে? যে এই ফাংশনকে কল করবে বা ব্যবহার করবে। কোথায় রিটার্ন দিবে? যেখান থেকে কল করা হবে সেখানেই রিটার্ন ভ্যালু পৌঁছে যাবে। নিচের উদাহরণ দেখলে আরও পরিষ্কার বুঝতে পারবো আমরা -

```python
def get_larger(x, y):
    if x > y:
        return x
    else:
        return y

larger_value = get_larger(23, 32)
print(larger_value)
```

আউটপুট,

```python
32
```

ফাংশনের মধ্যে `return` কিওয়ার্ড ব্যবহার করে ফাংশন থেকে কোন কিছু রিটার্ন করা হয়। উপরের উদাহরণে `get_larger` ফাংশনের কাছে আশা দুটো আর্গুমেন্টের মধ্যে সে তুলনা করে বড়টি বের করে এবং সেটি রিটার্ন করে। আর তাই নিচে যখন `= get_larger(23, 32)` স্টেটমেন্টের মাধ্যমে একে কল করা হয়েছে এবং এর চাহিদা মোতাবেক দুটো আর্গুমেন্ট পাঠিয়ে দেয়া হয়েছে তখন বস্তুত সেই ফাংশনের রিটার্ন করা ভ্যালুটি `=` চিহ্নের ডান পাশে এসে জমা হয়। আর যেহেতু আমরা জানি `=` চিহ্ন দিয়ে কোন ভ্যালুকে কোন ভ্যারিয়েবলে অ্যাসাইন করা হয়, তাই `larger_value` এর মধ্যে সেই রিটার্ন করা ভ্যালু স্টোর হচ্ছে।\
যা ঘটেছে তা হলঃ

```python
larger_value = get_larger(23, 32) # Function is done with working and returned something here
larger_value = 32
```

পরিশেষে একটি সাধারণ প্রিন্ট স্টেটমেন্ট।

খুব গুরুত্বপূর্ণ একটি বিষয় হচ্ছে, যখন কোন ফাংশনের মধ্যে একটি `return` স্টেটমেন্ট থাকে এবং সেটি এক্সিকিউট হয়, তারপর থেকে ফাংশনের মধ্যে থাকা আর কোন কোড এক্সিকিউট হয় না। অর্থাৎ, ফাংশন তার কাজ শেষে কিছু একটা রিটার্ন করেই থেমে যায়। যেমন -

```python
def add_numbers(x, y):
    total = x + y
    return total
     print("This won't be printed")

print(add_numbers(4, 5))
```

আউটপুট,

```python
9
```

উপরের প্রোগ্রামের ফাংশনটির কাজ হচ্ছে দুটো আর্গুমেন্ট ভ্যারিয়েবলকে যোগ করে নতুন একটি ভ্যারিয়েবলে রেখে সেটিকে তার caller এর কাছে রিটার্ন করা । রিটার্ন করেই সে ক্ষান্ত। এরপরে আরেকটি প্রিন্ট স্টেটমেন্ট থাকলেও সেটার কোন এক্সিকিউশন নেই। আর তাই সেই This won't be printed লাইনটিকে স্ক্রিনে দেখা যাচ্ছে না।
