ফাংশন (Functions)
ফাংশন কী? (What Are Functions?)
একটি ফাংশন হলো একটি রেসিপি কার্ডের মতো। আপনি রেসিপির নির্দেশাবলী একবার লিখে রাখেন, এর একটি নাম দিন, এবং যখনই আপনার সেই খাবারটি বানানোর প্রয়োজন হয়, আপনি কেবল নাম ধরে সেই রেসিপিটিকে ডাকেন। আপনি চাইলে এতে নিজের মতো পরিবর্তনও আনতে পারেন — "এই রেসিপিটি বানাও তবে সাথে কিছু অতিরিক্ত চিজ দিও" (যেটা হলো একটি প্যারামিটার!)।
ফাংশন যা যা করতে সাহায্য করে:
- পুনরাবৃত্তি (Repetition) এড়ানো — কোড একবার লিখুন, অসংখ্যবার কল করুন।
- গুছিয়ে রাখা (Organize) — জটিল ও বড় প্রোগ্রামগুলোকে ছোট ছোট সামলানোর মতো অংশে ভাগ করুন।
- টেস্ট করা (Test) — একটি বিশাল স্ক্রিপ্ট টেস্ট করার চেয়ে একটি ছোট ফাংশন টেস্ট করা অনেক সহজ।
ফাংশন সংজ্ঞায়িত এবং কল করা (Defining & Calling Functions)
প্যারামিটারের গভীরতা (Parameters Deep Dive)
পাইথনে ফাংশনের ভেতরে ডেটা পাস করার জন্য অনেক নমনীয় উপায় রয়েছে:
- পজিশনাল আর্গুমেন্টস (Positional args) — অবস্থান দিয়ে মেলানো হয়:
greet("Anika", 25) - কীওয়ার্ড আর্গুমেন্টস (Keyword args) — নাম দিয়ে মেলানো হয়:
greet(name="Anika", age=25) - ডিফল্ট ভ্যালু (Default values) — ফলব্যাক-সহ ঐচ্ছিক প্যারামিটার:
def greet(name, greeting="Hello") *args— অতিরিক্ত পজিশনাল আর্গুমেন্টগুলোকে একটি ট্যুপলে (tuple) সংগ্রহ করে**kwargs— অতিরিক্ত কীওয়ার্ড আর্গুমেন্টগুলোকে একটি ডিকশনারিতে (dictionary) সংগ্রহ করে
*args এবং **kwargs (*args and **kwargs)
স্কোপ বা পরিধি — ভ্যারিয়েবলগুলো যেখানে থাকে (Scope — Where Variables Live)
ফাংশনের ভেতরে তৈরি করা ভ্যারিয়েবলগুলো হলো লোকাল (local) — এগুলো কেবল ফাংশনটি চলাকালীন সময় থাকে, এরপর হারিয়ে যায়। ফাংশনের বাইরে তৈরি করা ভ্যারিয়েবলগুলো হলো গ্লোবাল (global) — এগুলো পুরো প্রোগ্রামের সময়কালের জন্যই থাকে।
এভাবে চিন্তা করুন: লোকাল ভ্যারিয়েবলগুলো কোনো মিটিং রুমের হোয়াইটবোর্ডে লেখা হয়। মিটিং শেষ হলে হোয়াইটবোর্ড মুছে ফেলা হয়। আর গ্লোবাল ভ্যারিয়েবলগুলো অফিসের দেয়ালে লেখা থাকে — সবাই এটি দেখতে পায়, তবে মিটিং রুমের ভেতর থেকে এটি পরিবর্তন করতে বিশেষ অনুমতির (global কীওয়ার্ডের) প্রয়োজন হয়।
স্কোপ এবং একাধিক ভ্যালু রিটার্ন করা (Scope & Returning Multiple Values)
ডকস্ট্রিং — আপনার ফাংশনগুলোকে ডকুমেন্ট করুন (Docstrings — Document Your Functions)
একটি ডকস্ট্রিং (docstring) হলো def লাইনের ঠিক নিচেই তিনটি কোটেশন বা ট্রিপল কোট দিয়ে ঘেরা একটি স্ট্রিং। এটি বর্ণনা করে যে ফাংশনটি কী কাজ করে, এটি কী আর্গুমেন্ট গ্রহণ করে এবং কী ভ্যালু রিটার্ন করে। এটি নেহাতই একটি কমেন্ট বা মন্তব্য নয় — পাইথন আসলেই এটিকে সংরক্ষণ করে রাখে এবং আপনি help() ব্যবহার করে এটি পড়তে পারেন!