Python for AI/Python শুরু/Lesson 09
Functions
Code-কে নাম দিয়ে reusable বানাও — def, parameter, return, default argument। ML-এর activation আর loss function বোঝার ভিত্তি।
- সময়
- 22 মিনিট
- Exercise
- 1
- Challenge
- 1
- Quiz
- 3 প্রশ্ন
সহজ ভাষায়
Function হলো code-এর একটা অংশ যাকে একটা নাম দেওয়া হয়েছে। একবার লিখে যতবার খুশি নাম ধরে ডাকা যায়।
তুমি আসলে শুরু থেকেই function ব্যবহার করছো: print(), len(), max()। আজ নিজের function বানাবে।
ভাবো একটা রান্নার রেসিপির মতো: উপকরণ (input / parameter) দাও → রেসিপি অনুযায়ী কাজ হয় → খাবার (output / return value) পাও।
কেন দরকার?
- একই code বারবার না লেখা (DRY — Don't Repeat Yourself)
- বড় সমস্যাকে ছোট ছোট অংশে ভাগ করা
- Test করা সহজ — প্রতিটা function আলাদা করে পরীক্ষা করা যায়
ML-এ সবখানে function: activation function (relu), loss function (mse), metric (accuracy)। PyTorch-এ model-এর forward() নিজেও একটা function।
Function বানানো: def
def— function বানানোর keywordgreet— function-এর নামname— parameter (input-এর জন্য variable)- ভেতরের code indent করা
return: মান ফেরত দেওয়া
print শুধু screen-এ দেখায়। return মান ফেরত দেয়, যেটা পরে ব্যবহার করা যায়:
print বনাম return — নতুনদের সবচেয়ে common confusion।
returnprogram-এর জন্য (ব্যবহার করা)। Function-এর হিসাব অন্য কোথাও লাগলে অবশ্যইreturn।
একাধিক parameter ও default মান
discount=0 হলো default argument — না দিলে 0 ধরে নেয়। নাম ধরে argument দেওয়াকে (discount=10) বলে keyword argument। scikit-learn-এ এটা সবখানে: RandomForestClassifier(n_estimators=100, max_depth=5)।
একাধিক মান return
Docstring
Function কী করে তা বোঝাতে প্রথম লাইনে একটা string — docstring:
Math intuition: function মানে mapping
গণিতে f(x) = x² মানে প্রতিটা x-কে একটা মানে পাঠানো। Python function ঠিক তাই। একটা পুরো Neural Network আসলে একটা বিশাল function — input (ছবি) নেয়, output (এটা বিড়াল নাকি কুকুর) দেয়। Training মানে সেই function-কে ঠিকঠাক বানানো।
Exercise
Exercise
Temperature converter
celsius_to_fahrenheit নামে একটা function লেখো যেটা Celsius নেয় আর Fahrenheit return করে।
সূত্র: F = C × 9/5 + 32
Quiz
Challenge
Challenge
Accuracy function
accuracy(y_true, y_pred) function লেখো। দুটো সমান দৈর্ঘ্যের list নেবে — আসল label আর model-এর prediction — এবং return করবে কত ভাগ prediction সঠিক (0 থেকে 1-এর মধ্যে একটা সংখ্যা)।
খালি list দিলে 0.0 return করবে।
বাস্তবে কোথায় ব্যবহার হয়?
তুমি এইমাত্র যে accuracy() লিখলে, scikit-learn-এ সেটা আছে sklearn.metrics.accuracy_score নামে, প্রায় একই কাজ করে। Real ML code-এ data cleaning, feature তৈরি, model train, evaluation — প্রতিটা ধাপ আলাদা function-এ লেখা হয়, যাতে pipeline বোঝা, test করা আর বদলানো সহজ হয়।
Interview প্রশ্ন
- Beginner: Parameter আর argument-এর পার্থক্য কী?
- Intermediate:
def add(item, items=[])লিখলে কী সমস্যা হয়? (Mutable default argument — একই list সব call-এ শেয়ার হয়।) - Advanced: Accuracy কখন misleading metric? (Imbalanced data — ৯৯% normal transaction থাকলে সবসময় "normal" বললেই ৯৯% accuracy!)
এরপর কী?
List-এ data রাখি index দিয়ে। কিন্তু student-এর নাম দিয়ে তার marks খুঁজতে চাইলে? পরের lesson: Dictionaries।