Class - XII: SEMESTER – III: Unit – 1: Python Programming: Section 14: Functions
Python Programming: Functions
১. Function কী?
Python programming language-এ Function হলো একটি reusable block of code, যা একটি নির্দিষ্ট কাজ সম্পন্ন করার জন্য লেখা হয়। সহজভাবে বললে, function হলো এমন একটি code block যাকে একবার define করা যায় এবং প্রয়োজন হলে বারবার call করে ব্যবহার করা যায়।
Function programming-এর একটি অত্যন্ত গুরুত্বপূর্ণ concept, কারণ এটি code-কে ছোট, organized, readable এবং reusable করে। যদি কোনো program-এ একই কাজ বারবার করতে হয়, তাহলে সেই code বারবার না লিখে function তৈরি করে নেওয়া ভালো। এরপর যেখানে দরকার সেখানে function call করলেই কাজটি সম্পন্ন হবে।
বাস্তব জীবনের উদাহরণ হিসেবে ভাবুন, একটি calculator-এর মধ্যে addition, subtraction, multiplication এবং division-এর আলাদা আলাদা button থাকে। প্রতিটি button একটি নির্দিষ্ট কাজ করে। Programming-এ function-ও ঠিক একইভাবে নির্দিষ্ট কাজ সম্পন্ন করে।
Function ব্যবহারের সুবিধা:
- Code reuse করা যায়।
- Program ছোট এবং পরিষ্কার হয়।
- Complex problem ছোট ছোট parts-এ ভাগ করা যায়।
- Debugging সহজ হয়।
- Code maintain করা সহজ হয়।
- একই কাজ বারবার লেখার দরকার হয় না।
২. Python-এ Function-এর ধরন
Python-এ functions সাধারণত তিন ধরনের হতে পারে:
- Built-in Functions
- Functions defined in Module
- User Defined Functions
এই তিন ধরনের function Python programming-এ খুব বেশি ব্যবহৃত হয়। Built-in functions Python-এর সাথে আগে থেকেই থাকে, module functions কোনো module import করে ব্যবহার করতে হয়, আর user defined functions programmer নিজে তৈরি করে।
৩. Built-in Functions
Built-in functions হলো Python-এর সাথে আগে থেকেই provided functions। এগুলো ব্যবহার করার জন্য কোনো module import করার দরকার হয় না। Python install করলেই এগুলো সরাসরি ব্যবহার করা যায়।
যেমন print(), input(), len(), type(), int(),
float(), str(), max(), min(), sum() ইত্যাদি built-in functions।
Example:
numbers = [10, 20, 30, 40]
print("Length:", len(numbers))
print("Maximum:", max(numbers))
print("Minimum:", min(numbers))
print("Sum:", sum(numbers))
Output:
Length: 4
Maximum: 40
Minimum: 10
Sum: 100
এখানে len(), max(), min(), এবং sum() built-in functions ব্যবহার করা হয়েছে।
৪. Functions Defined in Module
Python-এর অনেক functions বিভিন্ন modules-এর ভিতরে থাকে। এই functions ব্যবহার করতে হলে প্রথমে সংশ্লিষ্ট module import করতে হয়।
উদাহরণস্বরূপ, math module-এর মধ্যে sqrt(), ceil(), floor() ইত্যাদি functions আছে।
আবার random module-এর মধ্যে randint(), random() ইত্যাদি functions আছে।
Example using math module:
import math
print(math.sqrt(25))
print(math.ceil(4.3))
print(math.floor(4.9))
Output:
5.0
5
4
এখানে math module import করার পরে module-এর functions ব্যবহার করা হয়েছে।
যখন আমরা import math লিখি, তখন function call করার সময় math. prefix ব্যবহার করতে হয়।
Example using from statement:
from math import sqrt, pow
print(sqrt(64))
print(pow(2, 3))
Output:
8.0
8.0
এখানে sqrt এবং pow directly import করা হয়েছে, তাই math.sqrt() না লিখে সরাসরি sqrt() লেখা হয়েছে।
৫. User Defined Function
User defined function হলো সেই function যা programmer নিজে তৈরি করে। যখন কোনো specific কাজের জন্য built-in বা module function যথেষ্ট নয়, বা program-এর কোনো অংশ বারবার ব্যবহার করতে হয়, তখন user defined function তৈরি করা হয়।
Python-এ user defined function তৈরি করার জন্য def keyword ব্যবহার করা হয়।
Function-এর নামের পরে parentheses () এবং colon : দিতে হয়।
Function body indentation দিয়ে লিখতে হয়।
Syntax:
def function_name():
statement_1
statement_2
Example:
def greet():
print("Hello, welcome to Python!")
greet()
Output:
Hello, welcome to Python!
এখানে greet() একটি user defined function। প্রথমে function define করা হয়েছে, তারপর function call করা হয়েছে।
৬. Function Call কী?
Function তৈরি করার পর সেটি চালানোর জন্য function name লিখে parentheses ব্যবহার করতে হয়। এটিকে function call বলা হয়।
Example:
def show_message():
print("This is a function call example")
show_message()
এখানে show_message() লিখে function call করা হয়েছে।
Function call না করলে function-এর ভিতরের code execute হবে না।
Function একাধিকবার call করা:
def line():
print("--------------------")
line()
print("Student Report")
line()
print("End of Report")
line()
এখানে একই function বারবার call করা হয়েছে। ফলে একই code বারবার না লিখেও একই output পাওয়া যাচ্ছে।
৭. Arguments এবং Parameters
Function-এর সাথে value পাঠানোর জন্য arguments এবং parameters ব্যবহার করা হয়। Function definition-এর parentheses-এর মধ্যে যে variable লেখা হয় তাকে parameter বলা হয়। Function call করার সময় যে actual value পাঠানো হয় তাকে argument বলা হয়।
Example:
def greet(name):
print("Hello", name)
greet("Rahim")
Output:
Hello Rahim
এখানে name হলো parameter, আর "Rahim" হলো argument।
Function call করার সময় argument parameter-এর মধ্যে store হয়।
Multiple Parameters:
def add(a, b):
result = a + b
print("Sum:", result)
add(10, 20)
Output:
Sum: 30
৮. Arguments এবং Parameters-এর পার্থক্য
| বিষয় | Parameter | Argument |
|---|---|---|
| অর্থ | Function definition-এর variable | Function call করার সময় পাঠানো actual value |
| কোথায় থাকে | Function define করার সময় | Function call করার সময় |
| Example | def greet(name): |
greet("Rahim") |
| Role | Value receive করে | Value send করে |
৯. Positional Parameters
Positional parameters হলো এমন parameters যেখানে function call করার সময় arguments-এর position বা order অনুযায়ী value assign হয়। অর্থাৎ, প্রথম argument প্রথম parameter-এ যায়, দ্বিতীয় argument দ্বিতীয় parameter-এ যায়।
Example:
def student_info(name, age, marks):
print("Name:", name)
print("Age:", age)
print("Marks:", marks)
student_info("Rahim", 20, 85)
Output:
Name: Rahim
Age: 20
Marks: 85
এখানে "Rahim" name parameter-এ, 20 age parameter-এ এবং 85 marks parameter-এ গেছে।
Order ভুল হলে problem:
def student_info(name, age):
print("Name:", name)
print("Age:", age)
student_info(20, "Rahim")
এখানে output logically ভুল হবে, কারণ arguments-এর order ভুল। তাই positional arguments ব্যবহার করার সময় order খুব গুরুত্বপূর্ণ।
১০. Default Parameters
Default parameter হলো এমন parameter যার একটি default value function definition-এর সময়ই দেওয়া থাকে। Function call করার সময় যদি ওই parameter-এর জন্য argument না পাঠানো হয়, তাহলে default value ব্যবহার হয়।
Example:
def greet(name="Guest"):
print("Hello", name)
greet()
greet("Karim")
Output:
Hello Guest
Hello Karim
প্রথম function call-এ কোনো argument পাঠানো হয়নি, তাই default value "Guest" ব্যবহার হয়েছে।
দ্বিতীয় call-এ "Karim" পাঠানো হয়েছে, তাই default value replace হয়েছে।
Example with multiple parameters:
def calculate_price(price, discount=0):
final_price = price - discount
print("Final price:", final_price)
calculate_price(1000)
calculate_price(1000, 100)
Output:
Final price: 1000
Final price: 900
Wrong Example:
def show(country="India", name):
print(name, country)
এটি SyntaxError দেবে, কারণ default parameter-এর পরে non-default parameter রাখা হয়েছে।
Correct Example:
def show(name, country="India"):
print(name, country)
show("Rahim")
১১. Function Returning Value(s)
Function শুধু output print করতেই ব্যবহার হয় না; function কোনো value calculate করে caller-এর কাছে return-ও করতে পারে।
Python-এ function থেকে value return করার জন্য return statement ব্যবহার করা হয়।
Syntax:
def function_name():
return value
Example: Returning single value
def add(a, b):
return a + b
result = add(10, 20)
print("Sum:", result)
Output:
Sum: 30
এখানে add() function result calculate করে return করেছে।
Return করা value result variable-এ store হয়েছে।
Returning multiple values:
def calculate(a, b):
total = a + b
difference = a - b
product = a * b
return total, difference, product
s, d, p = calculate(10, 5)
print("Sum:", s)
print("Difference:", d)
print("Product:", p)
Output:
Sum: 15
Difference: 5
Product: 50
Python function multiple values return করতে পারে। আসলে Python multiple values tuple আকারে return করে, এবং আমরা tuple unpacking ব্যবহার করে values আলাদা variable-এ রাখতে পারি।
return statement execute হওয়ার পর function সঙ্গে সঙ্গে শেষ হয়ে যায়।
Return-এর পরে function-এর ভিতরে থাকা code execute হয় না।
Example:
def test():
return "Done"
print("This line will not execute")
print(test())
১২. print() এবং return-এর পার্থক্য
Beginner programmers অনেক সময় print() এবং return confuse করে।
print() screen-এ output দেখায়, কিন্তু value future calculation-এর জন্য caller-এর কাছে পাঠায় না।
অন্যদিকে return value function-এর বাইরে পাঠায়, যা variable-এ store করে পরবর্তী calculation-এ ব্যবহার করা যায়।
| বিষয় | print() | return |
|---|---|---|
| কাজ | Screen-এ output দেখায় | Function থেকে value ফেরত পাঠায় |
| Value reuse | সরাসরি reuse করা যায় না | Variable-এ store করে reuse করা যায় |
| Use case | User-কে result দেখানোর জন্য | Calculation result program-এর অন্য অংশে ব্যবহার করার জন্য |
Example:
def add_print(a, b):
print(a + b)
def add_return(a, b):
return a + b
add_print(10, 20)
result = add_return(10, 20)
print(result * 2)
এখানে add_return() থেকে returned value পরবর্তী calculation-এ ব্যবহার করা হয়েছে।
১৩. Flow of Execution in Functions
Function-এর ক্ষেত্রে program execution সবসময় উপরের line থেকে নিচে চলে, কিন্তু function call হলে execution temporarily function-এর ভিতরে চলে যায়। Function body execute হওয়ার পর execution আবার function call-এর পরের line-এ ফিরে আসে।
Example:
def greet():
print("Inside function")
print("Program starts")
greet()
print("Program ends")
Output:
Program starts
Inside function
Program ends
Execution Steps:
- Python প্রথমে function definition read করে, কিন্তু execute করে না।
print("Program starts")execute হয়।greet()function call হয়।- Execution function body-এর ভিতরে যায় এবং
Inside functionprint হয়। - Function শেষ হলে execution আবার function call-এর পরের line-এ ফিরে আসে।
Program endsprint হয়।
১৪. Scope of a Variable
Programming-এ scope বলতে বোঝায় একটি variable program-এর কোন অংশে accessible বা usable। Python-এ variable কোথায় declare করা হয়েছে তার উপর নির্ভর করে তার scope নির্ধারিত হয়।
এই topic-এ আমরা দুই ধরনের scope শিখব:
- Global Scope
- Local Scope
১৫. Global Scope
Function-এর বাইরে যে variable তৈরি করা হয়, তাকে global variable বলা হয়। Global variable program-এর যেকোনো function-এর ভিতরে read করা যায়।
Example:
message = "Hello from global scope"
def show_message():
print(message)
show_message()
Output:
Hello from global scope
এখানে message function-এর বাইরে define করা হয়েছে, তাই এটি global variable।
Function-এর ভিতরে এটি read করা গেছে।
Global variable modify করতে চাইলে:
count = 0
def increase():
global count
count = count + 1
increase()
increase()
print(count)
Output:
2
Function-এর ভিতরে global variable modify করতে হলে global keyword ব্যবহার করতে হয়।
১৬. Local Scope
Function-এর ভিতরে যে variable তৈরি করা হয়, তাকে local variable বলা হয়। Local variable শুধুমাত্র সেই function-এর ভিতরেই accessible। Function-এর বাইরে এটি ব্যবহার করা যায় না।
Example:
def show():
name = "Rahim"
print(name)
show()
# print(name) # এটি error দেবে
এখানে name variable function-এর ভিতরে তৈরি হয়েছে, তাই এটি local variable।
Function-এর বাইরে name access করলে NameError হবে।
Same name local and global variable:
name = "Global Rahim"
def show():
name = "Local Karim"
print("Inside function:", name)
show()
print("Outside function:", name)
Output:
Inside function: Local Karim
Outside function: Global Rahim
এখানে function-এর ভিতরের name local variable এবং function-এর বাইরের name global variable।
দুটো আলাদা variable হিসেবে কাজ করছে।
১৭. Global Scope এবং Local Scope-এর পার্থক্য
| বিষয় | Global Scope | Local Scope |
|---|---|---|
| Variable কোথায় তৈরি হয় | Function-এর বাইরে | Function-এর ভিতরে |
| Access | Program-এর বিভিন্ন অংশে access করা যায় | শুধু সেই function-এর ভিতরে access করা যায় |
| Lifetime | Program চলা পর্যন্ত থাকে | Function execution শেষ হলে সাধারণত শেষ হয় |
| Modify করতে | Function-এর ভিতরে modify করতে global দরকার |
Function-এর ভিতরে সরাসরি modify করা যায় |
| Example | x = 10 outside function |
x = 10 inside function |
১৮. Function with Input, Processing and Return
Practical program-এ function সাধারণত input receive করে, processing করে এবং result return করে। এই approach program-কে modular করে তোলে।
Example: Area of Rectangle
def rectangle_area(length, width):
area = length * width
return area
l = float(input("Length লিখুন: "))
w = float(input("Width লিখুন: "))
result = rectangle_area(l, w)
print("Area of rectangle:", result)
Explanation:
rectangle_area()function দুইটি parameter receive করছে।- Function-এর ভিতরে length এবং width multiply করে area calculate করা হচ্ছে।
- Calculated area return করা হচ্ছে।
- Returned value
resultvariable-এ store হচ্ছে। - শেষে result print করা হচ্ছে।
১৯. Suggested Program ১: Maximum of Two Numbers using Function
এই program user defined function ব্যবহার করে দুইটি number-এর মধ্যে maximum value বের করে।
def find_max(a, b):
if a > b:
return a
else:
return b
num1 = int(input("প্রথম সংখ্যা লিখুন: "))
num2 = int(input("দ্বিতীয় সংখ্যা লিখুন: "))
maximum = find_max(num1, num2)
print("Maximum number:", maximum)
এখানে function দুইটি argument receive করে এবং condition ব্যবহার করে বড় value return করে।
২০. Suggested Program ২: Factorial using Function
Factorial হলো 1 থেকে n পর্যন্ত সব positive integer-এর multiplication। User defined function ব্যবহার করে factorial program সহজে লেখা যায়।
def factorial(n):
fact = 1
for i in range(1, n + 1):
fact = fact * i
return fact
number = int(input("একটি positive number লিখুন: "))
if number < 0:
print("Negative number-এর factorial হয় না")
else:
result = factorial(number)
print(number, "এর factorial:", result)
এখানে factorial() function calculation করে result return করছে।
২১. Suggested Program ৩: Simple Calculator using Functions
Calculator program function শেখার জন্য খুব ভালো example, কারণ এখানে প্রতিটি operation আলাদা function হিসেবে লেখা যায়।
def add(a, b):
return a + b
def subtract(a, b):
return a - b
def multiply(a, b):
return a * b
def divide(a, b):
if b == 0:
return "Zero দিয়ে ভাগ করা যায় না"
else:
return a / b
num1 = float(input("প্রথম সংখ্যা লিখুন: "))
num2 = float(input("দ্বিতীয় সংখ্যা লিখুন: "))
print("Addition:", add(num1, num2))
print("Subtraction:", subtract(num1, num2))
print("Multiplication:", multiply(num1, num2))
print("Division:", divide(num1, num2))
Explanation:
- Addition, subtraction, multiplication এবং division-এর জন্য আলাদা function তৈরি করা হয়েছে।
- প্রতিটি function দুইটি parameter receive করছে।
- প্রতিটি function result return করছে।
- Division function-এ zero division check করা হয়েছে।
২২. Complete Practice Program
নিচের program-এ built-in function, module function, user defined function, default parameter, positional parameter, return value, flow of execution এবং scope — একসাথে দেখানো হয়েছে।
import math
school_name = "ABC School"
def greet_student(name="Student"):
print("Welcome", name)
def calculate_average(mark1, mark2, mark3):
total = mark1 + mark2 + mark3
average = total / 3
return average
def square_root_value(number):
return math.sqrt(number)
def show_school():
print("School:", school_name)
def local_scope_example():
message = "This is local variable"
print(message)
print("Program starts")
greet_student()
greet_student("Rahim")
avg = calculate_average(80, 85, 90)
print("Average Marks:", avg)
root = square_root_value(64)
print("Square Root:", root)
show_school()
local_scope_example()
print("Program ends")
Program Explanation:
mathmodule import করে module function ব্যবহার করা হয়েছে।school_nameglobal variable হিসেবে define করা হয়েছে।greet_student()function default parameter ব্যবহার করছে।calculate_average()function positional parameters receive করে average return করছে।square_root_value()function module functionmath.sqrt()ব্যবহার করছে।show_school()function global variable read করছে।local_scope_example()function local variable ব্যবহার করছে।- Program flow function call অনুযায়ী এক function থেকে আরেক function-এ যাচ্ছে।
২৩. Function Concepts Summary Table
| Concept | ব্যাখ্যা | Example |
|---|---|---|
| Built-in Function | Python-এ আগে থেকেই থাকা function | print(), len(), max() |
| Module Function | Module import করে ব্যবহার করা function | math.sqrt(), random.randint() |
| User Defined Function | Programmer নিজে তৈরি করে | def greet(): |
| Parameter | Function definition-এর variable | def add(a, b): |
| Argument | Function call করার সময় পাঠানো value | add(10, 20) |
| Default Parameter | Parameter-এর default value থাকে | def greet(name="Guest"): |
| Positional Parameter | Argument order অনুযায়ী value assign হয় | student("Rahim", 20) |
| Return Value | Function result caller-এর কাছে পাঠায় | return result |
| Global Scope | Function-এর বাইরে variable | x = 10 outside function |
| Local Scope | Function-এর ভিতরে variable | x = 10 inside function |
২৪. Common Mistakes in Functions
- Function call না করা: Function define করলে body execute হয় না; call করতে হয়।
- Indentation ভুল করা: Function body অবশ্যই indent করতে হবে।
- Colon ভুলে যাওয়া:
def function_name():শেষে colon দিতে হয়। - Parameter এবং argument সংখ্যা mismatch: Function যত parameter expect করে, call করার সময় ঠিক তত argument দিতে হবে, যদি default না থাকে।
- return এবং print confuse করা:
print()output দেখায়,returnvalue ফেরত দেয়। - Local variable function-এর বাইরে access করা: Local variable function-এর বাইরে available নয়।
- Default parameter-এর পরে non-default parameter রাখা: এটি SyntaxError দেয়।
- Global variable modify করতে global keyword না ব্যবহার করা: Function-এর ভিতরে global variable modify করতে
globalদরকার।
Wrong Example:
def add(a, b)
return a + b
এখানে colon নেই, তাই SyntaxError হবে।
Correct Example:
def add(a, b):
return a + b
২৫. উপসংহার
Python functions programming-এর একটি মৌলিক এবং অত্যন্ত গুরুত্বপূর্ণ অংশ। Function ব্যবহার করে আমরা program-কে ছোট ছোট meaningful parts-এ divide করতে পারি। এতে code reusable, readable এবং maintainable হয়।
Python-এ built-in functions সরাসরি ব্যবহার করা যায়, module-defined functions import করে ব্যবহার করতে হয়,
এবং user defined functions programmer নিজে তৈরি করে। User defined function তৈরি করতে def keyword ব্যবহার করা হয়।
Function parameters value receive করে এবং arguments function call-এর সময় value পাঠায়।
Default parameters function-কে flexible করে, positional parameters argument order অনুযায়ী value assign করে,
এবং return statement function থেকে calculated value ফেরত পাঠায়। Function-এর flow of execution বুঝলে বোঝা যায় program কীভাবে function call-এর সময় ভিতরে যায় এবং কাজ শেষ হলে আবার main flow-তে ফিরে আসে।
Variable scope বুঝা খুব জরুরি, কারণ কোন variable কোথায় access করা যাবে তা scope নির্ধারণ করে। Global variable function-এর বাইরে থাকে এবং local variable function-এর ভিতরে থাকে। একজন beginner programmer functions ভালোভাবে শিখলে calculator, grade system, factorial, searching, validation, data processing এবং real-world application development অনেক সহজে করতে পারবে।