🔹 تا حالا شده توی پایتون یک تابع محاسباتی سنگین (مثل فاکتوریل، فیبوناچی یا پردازش داده) داشته باشی که با ورودیهای تکراری مدام اجرا بشه و سیپییو رو درگیر کنه؟
🔹پایتون برای این کار یک ابزار فوقالعاده توی کتابخونه داخلی functools داره به اسم @cache (یا @lru_cache).
🔹 روش عادی (اجرای مجدد محاسبات تکراری):
def fibonacci(n):
if n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
# برای n = 35 چند ثانیه طول میکشه و میلیونها محاسبه تکراری انجام میده!
print(fibonacci(35))
🔹روش هوشمندانه با Cache (ذخیره نتایج قبلی در حافظه):
from functools import cache
@cache
def fibonacci(n):
if n < 2:
return n
return fibonacci(n - 1) + fibonacci(n - 2)
# اجرای همون کد در کسری از میلیثانیه (O(n) به جای O(2^n))!
print(fibonacci(35))
🔹 چطور کار میکنه؟
وقتی دکوراتور @cache رو بالای تابع میذاری، پایتون ورودیها و خروجیهای تابع رو یادش میمونه. دفعه بعد که همون ورودی داده بشه، به جای محاسبه مجدد، بلافاصله جواب رو از رم برمیگردونه!
🐍 @python_rd