কম্পিউটার টিউটোরিয়াল

পাইথনে ফাংশন ডেকোরেটর চেইন (Chain of Decorators) তৈরি করা

ডেকোরেটর হলো ফাংশনকে র‍্যাপ করে তার আচরণ পরিবর্তন/বাড়ানো কৌশল। একাধিক ডেকোরেটর চেইন করে ব্যবহার করা যায় — নিচের ডেকোরেটর আগে এক্সিকিউট হয়।

উদাহরণ: Bold + Italic চেইন

def makebold(fn):
    def wrapped():
        return "" + fn() + ""
    return wrapped

def makeitalic(fn):
    def wrapped():
        return "" + fn() + ""
    return wrapped

@makebold
@makeitalic
def hello():
    return "hello world"

print(hello())  # hello world

এক্সিকিউশন অর্ডার

@makebold
@makeitalic
def hello(): ...
# সমতুল্য:
hello = makebold(makeitalic(hello))
  1. প্রথমে makeitalic(hello) কল হয় → রিটার্ন করে wrapped (italic wrapper)।
  2. তারপর makebold(...) কল হয় → রিটার্ন করে wrapped (bold wrapper)।
  3. ফাইনাল hello হলো bold(wrapped(italic(wrapped(original))))।

আর্গামেন্ট গ্রহণকারী ডেকোরেটর

def repeat(times):
    def decorator(fn):
        def wrapped(*args, **kwargs):
            for _ in range(times):
                result = fn(*args, **kwargs)
            return result
        return wrapped
    return decorator

@repeat(3)
def greet(name):
    print(f"Hello {name}")

greet("Alice")  # Hello Alice (x3)

functools.wraps — মেটাডেটা সংরক্ষণ

from functools import wraps

def my_decorator(fn):
    @wraps(fn)
    def wrapped(*args, **kwargs):
        return fn(*args, **kwargs)
    return wrapped

@wraps দিয়ে অরিজিনাল ফাংশনের __name__, __doc__, __annotations__ সংরক্ষণ থাকে।

  1. Matplotlib-এ মাল্টিভ্যারিয়েট ফাংশন প্লট করুন

  2. Python-এ def দিয়ে সংজ্ঞায়িত ফাংশন প্লট করার পদ্ধতি? (Matplotlib)

  3. পাইথন মেশগ্রিডে ফাংশন প্রয়োগ করা

  4. পাইথনে লগ হিস্টোগ্রাম তৈরি করা