মূল content-এ যাও

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

main.py
  • def — function বানানোর keyword
  • greet — function-এর নাম
  • name — parameter (input-এর জন্য variable)
  • ভেতরের code indent করা

return: মান ফেরত দেওয়া

print শুধু screen-এ দেখায়। return মান ফেরত দেয়, যেটা পরে ব্যবহার করা যায়:

main.py

print বনাম return — নতুনদের সবচেয়ে common confusion। print মানুষের জন্য (দেখানো), return program-এর জন্য (ব্যবহার করা)। Function-এর হিসাব অন্য কোথাও লাগলে অবশ্যই return।

একাধিক parameter ও default মান

main.py

discount=0 হলো default argument — না দিলে 0 ধরে নেয়। নাম ধরে argument দেওয়াকে (discount=10) বলে keyword argument। scikit-learn-এ এটা সবখানে: RandomForestClassifier(n_estimators=100, max_depth=5)।

একাধিক মান return

main.py

Docstring

Function কী করে তা বোঝাতে প্রথম লাইনে একটা string — docstring:

main.py

Math intuition: function মানে mapping

গণিতে f(x) = x² মানে প্রতিটা x-কে একটা মানে পাঠানো। Python function ঠিক তাই। একটা পুরো Neural Network আসলে একটা বিশাল function — input (ছবি) নেয়, output (এটা বিড়াল নাকি কুকুর) দেয়। Training মানে সেই function-কে ঠিকঠাক বানানো।

main.py

Exercise

Exercise

Temperature converter

+20 XP

celsius_to_fahrenheit নামে একটা function লেখো যেটা Celsius নেয় আর Fahrenheit return করে।

সূত্র: F = C × 9/5 + 32

solution.py

Quiz

  1. Q1নিচের code কী print করবে?
    def add(a, b):
        print(a + b)
    
    result = add(2, 3)
    print(result)
    
  2. Q2def greet(name, msg="Hello") — greet("Rina") ডাকলে msg-এর মান কী?
  3. Q3Function-এর ভেতরে return-এর পরে লেখা code-এর কী হয়?
0/3 answered

Challenge

Challenge

Accuracy function

+50 XP

accuracy(y_true, y_pred) function লেখো। দুটো সমান দৈর্ঘ্যের list নেবে — আসল label আর model-এর prediction — এবং return করবে কত ভাগ prediction সঠিক (0 থেকে 1-এর মধ্যে একটা সংখ্যা)।

খালি list দিলে 0.0 return করবে।

solution.py

বাস্তবে কোথায় ব্যবহার হয়?

তুমি এইমাত্র যে 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।