رفتن به محتوای اصلی
برنامه‌سازی پیشرفته با پایتون درس‌نامهٔ آزاد
مثال پیشرفته ۱۲ دقیقه

رجیستری دستور با دکوراتور

سیستمی بساز که هر تابعِ دارای دکوراتور register خودکار دستورِ برنامه شود و راهنما از امضاها ساخته شود.

صورت مسئله

سیستمی بساز که هر تابعِ دارای دکوراتور register خودکار دستورِ برنامه شود و راهنما از امضاها ساخته شود.

مثال حل‌شده

رجیستری دستور

پیشرفته

صورت مسئله

دو دستور greet و add ثبت کن، فهرستشان را چاپ کن و add را با ورودی رشته‌ای صدا بزن.

راه‌حل گام‌به‌گام

    ۴ گام باقی مانده
    import functools, inspect
    
    COMMANDS = {}
    
    def register(func):
        COMMANDS[func.__name__] = func
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            return func(*args, **kwargs)
        return wrapper
    
    @register
    def greet(name):
        """سلام کردن به یک نفر."""
        return f"سلام {name}!"
    
    @register
    def add(a, b):
        """جمع دو عدد."""
        return float(a) + float(b)
    
    def help_text():
        lines = []
        for name, func in COMMANDS.items():
            lines.append(f"{name}{inspect.signature(func)}: {func.__doc__}")
        return "\n".join(lines)
    
    print(help_text())
    print(COMMANDS["add"]("2", "3"))  # 5.0

    مطالب مرتبط

    از همین بخش و با برچسب‌های مشترک

    این مطلب را خواندید؟ آن را علامت بزنید تا پیشرفت شما روی همین دستگاه ذخیره شود.

    وضعیت پیشرفت برای رجیستری دستور با دکوراتور