Theme
Primary Color

حفظ نتائج الدالة بإستخدام lru_cache

ال lru_cache بتحتفظ بنتائج إستدعاءات سابقة علشان نفس المعاملات متحتاجش تعيد الحساب

تجنب تكرار الحساب

رسالة الحساب بتظهر مرة واحدة رغم إستدعاء الدالة مرتين

from functools import lru_cache

@lru_cache(maxsize=32)
def square(number):
    print("Calculating")
    return number * number

print(square(4))
print(square(4))

النتيجة

Calculating
16
16

مسح النتائج المحفوظة

ال cache_clear بتمسح الكاش علشان الإستدعاء التالي يحسب النتيجة من جديد

from functools import lru_cache

@lru_cache(maxsize=32)
def double(number):
    return number * 2

double(3)
double(3)
print(double.cache_info().hits)
double.cache_clear()
print(double.cache_info().currsize)

النتيجة

1
0
ملحوظة

المعاملات لازم تكون قابلة للتجزئة وإستخدمها مع دوال نتيجتها تعتمد على المعاملات وتجنب النتائج المتغيرة زي الوقت الحالي

python شرح