Decorator ও Generator
🧠 Python Functional Programming: Decorator ও Generator
Python Functional Programming এমন একটি প্রোগ্রামিং স্টাইল যেখানে function কে first-class citizen হিসেবে ব্যবহার করা হয়। এই অধ্যায়ে আমরা দুটি অত্যন্ত গুরুত্বপূর্ণ বিষয় শিখবো:
- Decorator – ফাংশনের আচরণ পরিবর্তন করতে
- Generator – memory efficient iteration করতে
🔹 Decorator কী?
Decorator হলো এমন একটি ফাংশন যা অন্য একটি ফাংশনকে ইনপুট হিসেবে নেয় এবং তার আচরণ (behavior) পরিবর্তন করে।
Decorator সাধারণত @ চিহ্ন দিয়ে ব্যবহার করা হয়।
📌 Simple Decorator Example
def my_decorator(func):
def wrapper():
print("Function শুরু হচ্ছে")
func()
print("Function শেষ হয়েছে")
return wrapper
@my_decorator
def say_hello():
print("Hello Python")
say_hello()
# Output:
# Function শুরু হচ্ছে
# Hello Python
# Function শেষ হয়েছে
এখানে say_hello() ফাংশনের আগে ও পরে অতিরিক্ত কোড যুক্ত হয়েছে,
কিন্তু মূল ফাংশনের কোড পরিবর্তন করতে হয়নি।
📌 Decorator with Arguments
def auth_required(func):
def wrapper(user):
if user == "admin":
func(user)
else:
print("Access Denied")
return wrapper
@auth_required
def dashboard(user):
print("Welcome to dashboard")
dashboard("admin")
dashboard("guest")
# Output:
# Welcome to dashboard
# Access Denied
এই ধরনের Decorator বাস্তবে authentication, logging, timing ইত্যাদির জন্য ব্যবহার হয়।
🔹 Generator কী?
Generator হলো এমন একটি ফাংশন যা একবারে সব ডাটা রিটার্ন না করে, একটি করে value yield করে। এটি memory-efficient এবং বড় ডাটার জন্য অত্যন্ত উপকারী।
📌 Normal Function vs Generator
# Normal Function
def normal_func():
return [1, 2, 3, 4]
# Generator Function
def generator_func():
yield 1
yield 2
yield 3
yield 4
print(normal_func())
print(list(generator_func()))
# Output:
# [1, 2, 3, 4]
# [1, 2, 3, 4]
পার্থক্য হলো Generator সব ডাটা একসাথে memory তে লোড করে না।
📌 Generator with Loop
def count_up(n):
i = 1
while i <= n:
yield i
i += 1
for num in count_up(5):
print(num)
# Output:
# 1
# 2
# 3
# 4
# 5
Generator iteration চলাকালীন প্রয়োজন অনুযায়ী value তৈরি করে।
💡 বাস্তব জীবনে ব্যবহার
- Decorator → Authentication, Logging, Caching
- Generator → Large File Read, API Pagination, Streaming Data
✅ সংক্ষেপে
- Decorator ফাংশনের আচরণ পরিবর্তন করে
- Generator memory-efficient iteration দেয়
- Functional Programming এ দুটোই অত্যন্ত গুরুত্বপূর্ণ
লোড হচ্ছে...
1. Decorator কী?
ফাংশনের আচরণ পরিবর্তন করে।
2. Generator কী?
yield ব্যবহার করে data generate করে।
3. Generator এর সুবিধা কী?
Memory efficient।