Pythoner
Фотография
🔎Многие сталкиваются с проблемой, что кол очень долго выполняется, то бишь не оптимизирован. Сейчас мы это исправим.
➡️Для примера возьмём функцию вычисления последовательности Фибоначчи:
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
for i in range(50):
print(i, fibonacci(i))
⬆️Если сейчас мы запустим код, то он будет выполняться ну очень долго.
➡️Теперь давайте изучим код. Если подумать, то понятно что у нас много раз просчитывается одни и те же значения. Так давайте будем сохранять то что уже посчитали! Для этого можно использовать декоратор lru_cache из встроенного модуля functools:
from functools import lru_cache
@lru_cache
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
for i in range(50):
print(i, fibonacci(i))
⬆️Так, данный код будет выполняться в рааазы быстрее.
Подробнее про этот декоратор можно почитать здесь.
🐍Pythoner
33 · 2.8K ·