Анализ результатов помогает выявить узкие места в производительности, показывая точное время выполнения отдельных операций внутри функции.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Паттерн Strategy позволяет динамически менять алгоритмы, инкапсулируя их в отдельные классы. Основные компоненты:
- Strategy: Интерфейс для всех алгоритмов
- ConcreteStrategy: Конкретные реализации алгоритмов
- Context: Класс, использующий стратегию через композицию
Позволяет легко добавлять новые алгоритмы без изменения основного кода.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
class Strategy:
def execute(self, data):
pass
class ConcreteStrategyA(Strategy):
def execute(self, data):
return sorted(data)
class Context:
def __init__(self, strategy):
self._strategy = strategy
def execute_strategy(self, data):
return self._strategy.execute(data)
- Strategy: Интерфейс для всех алгоритмов
- ConcreteStrategy: Конкретные реализации алгоритмов
- Context: Класс, использующий стратегию через композицию
Позволяет легко добавлять новые алгоритмы без изменения основного кода.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Основные методы контроля выполнения цикла:
- Счетчик итераций: Ограничивает максимальное количество выполнений
- Изменяемое условие: Гарантирует выход при изменении ключевых переменных
- Таймаут: Для долгих операций добавляется проверка времени выполнения
Рекомендуется всегда предусматривать четкий критерий завершения и тестировать граничные условия.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
max_iterations = 1000
counter = 0
while condition and counter < max_iterations:
counter += 1
# Логика цикла
- Счетчик итераций: Ограничивает максимальное количество выполнений
- Изменяемое условие: Гарантирует выход при изменении ключевых переменных
- Таймаут: Для долгих операций добавляется проверка времени выполнения
Рекомендуется всегда предусматривать четкий критерий завершения и тестировать граничные условия.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Кортежи занимают меньше памяти и работают быстрее, что делает их предпочтительными для фиксированных данных, а списки лучше подходят для динамических коллекций.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Замыкание — это функция, которая запоминает значения из enclosing scope даже после завершения работы внешней функции.
- Внешняя функция (outer_func) принимает параметр
- Вложенная функция сохраняет доступ к переменной
- При вызове
Замыкания полезны для создания фабрик функций и сохранения состояния между вызовами.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
def outer_func(x):
def inner_func(y):
return x + y
return inner_func
closure = outer_func(10)
result = closure(5) # 15
- Внешняя функция (outer_func) принимает параметр
x
и возвращает вложенную функцию (inner_func) - Вложенная функция сохраняет доступ к переменной
x
даже после завершения outer_func
- При вызове
closure(5)
она использует запомненное значение x=10
Замыкания полезны для создания фабрик функций и сохранения состояния между вызовами.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Пользовательские исключения создаются через наследование от базовых классов исключений (Exception или его подклассов).
- Наследование от
- Дополнительные параметры (например, code) добавляют контекст обработчику
- Документация (docstring) поясняет назначение исключения
Используется для точной обработки специфичных ошибок приложения.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
class CustomError(Exception):
"""Базовое пользовательское исключение"""
pass
class ValidationError(CustomError):
"""Ошибка валидации с дополнительными атрибутами"""
def __init__(self, message, code):
super().__init__(message)
self.code = code
- Наследование от
Exception
делает класс полноценным исключением - Дополнительные параметры (например, code) добавляют контекст обработчику
- Документация (docstring) поясняет назначение исключения
Используется для точной обработки специфичных ошибок приложения.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Альтернативно можно использовать pathlib.Path.unlink() для более объектно-ориентированного подхода. Оба метода permanently удаляют файл, поэтому следует соблюдать осторожность.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Для импорта модуля из пакета используется точечная нотация, указывающая иерархию вложенности.
- Абсолютный импорт указывает полный путь от корня проекта
- Относительный импорт (через точки) возможен внутри пакета:
Пакет должен содержать файл
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
from package.subpackage import module
from package.subpackage.module import specific_function
- Абсолютный импорт указывает полный путь от корня проекта
- Относительный импорт (через точки) возможен внутри пакета:
from .sibling_module import helper
Пакет должен содержать файл
__init__.py
(может быть пустым) для распознавания его как python-пакета. Импорт выполняется через поиск в sys.path
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Оператор
Здесь
Оператор
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
not
инвертирует логическое значение выражения. Если выражение истинно, not
возвращает False
, и наоборот. Часто используется в условных конструкциях для проверки обратных условий.
x = False
if not x:
print("Условие выполнено")
Здесь
not x
превращает False
в True
, и блок кода выполняется.
value = 10
if not value > 20:
print("Значение не больше 20")
Оператор
not
применяется к результату сравнения value > 20
(который False), делая условие истинным.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
pip
— стандартный менеджер пакетов для установки модулей. Основные команды:
pip install package_name # Установка пакета
pip install package==1.0.0 # Установка конкретной версии
pip uninstall package_name # Удаление пакета
pip list # Список установленных пакетов
pip show package_name # Информация о пакете
Для работы с зависимостями проекта:
pip freeze > requirements.txt # Экспорт зависимостей
pip install -r requirements.txt # Установка из файла
Можно указывать дополнительные опции, например
--user
для установки в домашнюю директорию или -U
для обновления пакета.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Метод
Если
✈️ Python собеседования
__contains__()
определяет поведение оператора in
для пользовательских объектов. При вызове x in obj
интерпретатор ищет obj.__contains__(x)
и возвращает True
или False
.
class MyContainer:
def __contains__(self, item):
return item in [1, 2, 3]
container = MyContainer()
print(3 in container) # True
print(5 in container) # False
Если
__contains__()
не реализован, Python использует __iter__()
и поочередное сравнение элементов. Метод полезен для создания контейнеров с оптимизированной проверкой вхождения.Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Функция
Работает только с целыми числами. Для отрицательных чисел возвращает строку с минусом перед префиксом.
Аналог встроенного форматирования: format(10, '#o') или f"{10:#o}".
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
oct()
преобразует целое число в строку с восьмеричным представлением, начинающимся с префикса 0o
.
num = 64
print(oct(num)) # '0o100'
Работает только с целыми числами. Для отрицательных чисел возвращает строку с минусом перед префиксом.
print(oct(-8)) # '-0o10'
Аналог встроенного форматирования: format(10, '#o') или f"{10:#o}".
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Библиотека
Поддерживает различные типы данных: строки, хеши, списки, множества.
Для транзакций используется
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
redis-py
предоставляет клиент для взаимодействия с Redis. Основные операции выполняются через класс Redis
.
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('key', 'value') # Запись строки
print(r.get('key')) # Чтение значения
Поддерживает различные типы данных: строки, хеши, списки, множества.
r.hset('user', 'name', 'Alice') # Хеш-таблица
r.lpush('list', 1, 2, 3) # Список
Для транзакций используется
pipeline()
, для Pub/Sub — отдельный API.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Для установки конкретной версии пакета используется синтаксис
Можно задать диапазон версий с помощью дополнительных операторов:
Допустимы модификаторы
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
==
в команде pip install
.
pip install package_name==1.2.3 # Точно указанная версия
pip install package_name>=1.2.0 # Минимальная версия
Можно задать диапазон версий с помощью дополнительных операторов:
pip install "package_name>=1.0.0,<2.0.0" # Версии от 1.0.0 до 2.0.0 (исключая 2.0.0)
Допустимы модификаторы
~=
(совместимые версии) и !=
(исключение версии).Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Команда
Для отмены изменений в конкретном файле:
Флаг
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
git reset
отменяет изменения, возвращая репозиторий к указанному коммиту.
git reset --soft HEAD~1 # Отмена последнего коммита с сохранением изменений в индексе
git reset --mixed HEAD~1 # Отмена коммита и индекса (изменения остаются в рабочей директории)
git reset --hard HEAD~1 # Полная отмена коммита и всех изменений (осторожно!)
Для отмены изменений в конкретном файле:
git reset HEAD file.txt # Удаление файла из индекса
Флаг
--hard
необратимо удаляет изменения, --soft
и --mixed
оставляют возможность повтора коммита.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Django предоставляет встроенную защиту от CSRF через middleware
Для AJAX-запросов токен передается в заголовке
Отключение защиты (не рекомендуется) делается декоратором
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
django.middleware.csrf.CsrfViewMiddleware
.
# В форме добавляется CSRF-токен
<form method="POST">
{% csrf_token %}
</form>
Для AJAX-запросов токен передается в заголовке
X-CSRFToken
.
headers: {'X-CSRFToken': getCookie('csrftoken')}
Отключение защиты (не рекомендуется) делается декоратором
@csrf_exempt
. Проверка токена происходит автоматически для POST, PUT, DELETE запросов.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4