مثال حلشده
پیشرفته رجیستری دستور
صورت مسئله
دو دستور 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