Какие знаешь базовые оптимизации

Python Junior Без компании
Какие знаешь базовые оптимизации
Ответы
- **Использование генераторов** вместо списков для экономии памяти, особенно при работе с большими данными. ``` # Плохо: создает список в памяти squares = [x**2 for x in range(1000000)] # Лучше: генератор squares_gen = (x**2 for x in range(1000000)) ``` - **Кеширование результатов** с помощью `functools.lru_cache` для повторяющихся вычислений. ``` from functools import lru_cache @lru_cache(maxsize=128) def fib(n): if n < 2: return n return fib(n-1) + fib(n-2) ``` - **Оптимизация строк** через `join()` вместо конкатенации в циклах. ``` # Плохо: создает много временных строк result = "" for s in list_of_strings: result += s # Лучше: result = "".join(list_of_strings) ``` - **Использование `set`** для быстрого поиска (O(1) вместо O(n) у списков). - **Локальные переменные** в циклах: доступ к ним быстрее, чем к глобальным. - **Встроенные функции** (`map()`, `filter()`, `sum()`) часто работают быстрее ручных аналогов. - **Избегание `+` для immutable объектов** (например, кортежи или строки), так как создается новый объект. - **Профилирование кода** через `cProfile` или `timeit` для точного выявления узких мест.