Для удаления пакета через pip используется команда
После выполнения команды pip запросит подтверждение удаления. Для автоматического подтверждения можно добавить флаг
Удаление затрагивает только указанный пакет, не затрагивая его зависимости. Для просмотра списка установленных пакетов перед удалением можно использовать
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
uninstall
с указанием имени пакета:
pip uninstall package_name
После выполнения команды pip запросит подтверждение удаления. Для автоматического подтверждения можно добавить флаг
-y
:
pip uninstall package_name -y
Удаление затрагивает только указанный пакет, не затрагивая его зависимости. Для просмотра списка установленных пакетов перед удалением можно использовать
pip list
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
В
Ключевые особенности:
- Задачи выполняются конкурентно в одном потоке
- Позволяют отслеживать состояние через
- Можно отменять через
Используются для параллельного запуска корутин без блокировки основного потока.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
asyncio
Task — это объект, который оборачивает корутину и планирует её выполнение в цикле событий.
import asyncio
async def my_coroutine():
await asyncio.sleep(1)
return "Done"
task = asyncio.create_task(my_coroutine()) # Создание задачи
Ключевые особенности:
- Задачи выполняются конкурентно в одном потоке
- Позволяют отслеживать состояние через
done()
, result()
- Можно отменять через
cancel()
Используются для параллельного запуска корутин без блокировки основного потока.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
git stash
временно сохраняет незакоммиченные изменения, позволяя переключиться между ветками без коммита.
git stash save "Work in progress" # Сохраняет изменения в stash
Основные команды:
-
git stash list
— показывает список сохранённых stash -
git stash apply
— восстанавливает последний stash (без удаления) -
git stash pop
— применяет и удаляет последний stash
git stash drop stash@{1} # Удаляет конкретный stash
Используется для временного сохранения правок перед сменой контекста работы.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Модуль
Получение версии пакета:
Возвращает текущую версию установленного пакета.
Чтение файлов из пакета:
Загружает содержимое файла
Проверка зависимостей:
Возвращает список зависимостей для указанного пакета.
Модуль полезен для управления ресурсами и зависимостями в проектах.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
pkg_resources
из setuptools
предоставляет инструменты для работы с ресурсами и зависимостями пакетов. Основные функции включают управление версиями, доступ к файлам внутри пакетов и проверку зависимостей. Получение версии пакета:
import pkg_resources
version = pkg_resources.get_distribution("requests").version
Возвращает текущую версию установленного пакета.
Чтение файлов из пакета:
python
data = pkg_resources.resource_string("my_package", "data/file.txt")
Загружает содержимое файла
file.txt
из пакета my_package
. Проверка зависимостей:
python
dependencies = pkg_resources.require("requests")
Возвращает список зависимостей для указанного пакета.
Модуль полезен для управления ресурсами и зависимостями в проектах.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Модуль
Сериализация объекта в файл:
Записывает объект
Десериализация из файла:
Восстанавливает объект из файла.
Сериализация в строку байт:
Преобразует объект в байты и обратно.
Используется для сохранения состояния объектов или передачи между процессами.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
pickle
позволяет сериализовать и десериализовать объекты в байтовый поток для сохранения или передачи. Сериализация объекта в файл:
python
import pickle
data = {"key": "value"}
with open("data.pkl", "wb") as file:
pickle.dump(data, file)
Записывает объект
data
в файл в бинарном режиме. Десериализация из файла:
python
with open("data.pkl", "rb") as file:
loaded_data = pickle.load(file)
Восстанавливает объект из файла.
Сериализация в строку байт:
python
bytes_data = pickle.dumps(data)
restored_data = pickle.loads(bytes_data)
Преобразует объект в байты и обратно.
Используется для сохранения состояния объектов или передачи между процессами.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Перем
Только
Важные особенности:
- Если
- Влияет только на звездочный импорт, явный импорт (import module) игнорирует
Полезен для явного контроля публичного API модуля.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
енная _
_all__ в модуле определяет, какие имена будут экспортированы при импорте через from module im
port *.
__all__ = ['public_func', 'PublicClass']
def public_func():
pass
def _private_func():
pass
class PublicClass:
pass
Только
public_func
и PublicClass
будут доступны при звездочном импорте. Важные особенности:
- Если
__all__
не указан, import *
включает все имена, кроме начинающихся с _
. - Влияет только на звездочный импорт, явный импорт (import module) игнорирует
__all__
. Полезен для явного контроля публичного API модуля.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод
Класс
Итераторы позволяют последовательно получать элементы без загрузки всей коллекции в память.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
__iter__()
возвращает сам итератор, а __next__()
возвращает следующий элемент последовательности. При исчерпании элементов вызывается StopIteration
.
class Counter:
def __init__(self, limit):
self.current = 0
self.limit = limit
def __iter__(self):
return self
def __next__(self):
if self.current < self.limit:
self.current += 1
return self.current
raise StopIteration
Класс
Counter
будет выдавать числа от 1 до указанного лимита. Итераторы позволяют последовательно получать элементы без загрузки всей коллекции в память.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Для нахождения общих элементов двух множеств используется оператор
Альтернативный вариант с методом:
Оба способа возвращают новое множество, содержащее только элементы, присутствующие в обоих исходных множествах. Метод
Операция выполняется за O(min(len(a), len(b))) в среднем случае.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
&
или метод intersection()
.
set1 = {1, 2, 3}
set2 = {2, 3, 4}
result = set1 & set2 # {2, 3}
Альтернативный вариант с методом:
result = set1.intersection(set2) # {2, 3}
Оба способа возвращают новое множество, содержащее только элементы, присутствующие в обоих исходных множествах. Метод
intersection()
может принимать несколько аргументов для поиска пересечения между несколькими множествами. Операция выполняется за O(min(len(a), len(b))) в среднем случае.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Очередь
-
-
- Поддерживает методы
Используется для организации асинхронных конвейеров обработки данных, где производители и потребители работают в разных корутинах.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
asyncio.Queue
предоставляет потокобезопасный механизм для передачи сообщений между асинхронными задачами. Основные методы:
queue = asyncio.Queue(maxsize=10)
await queue.put(item) # Добавление элемента
item = await queue.get() # Извлечение элемента
-
put()
блокирует корутину при заполненной очереди (если задан maxsize) -
get()
ожидает появления элементов в пустой очереди - Поддерживает методы
join()
, task_done()
для отслеживания завершения обработки Используется для организации асинхронных конвейеров обработки данных, где производители и потребители работают в разных корутинах.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Модели создаются как подклассы
-
- Типы данных (`Integer`, `String`) определяют формат столбцов
- Параметры вроде
Модели автоматически создают таблицы при вызове
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
declarative_base()
, с атрибутами через Column()
. Каждый атрибут соответствует полю таблицы с указанием типа и параметров.
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False)
-
__tablename__
задает имя таблицы в БД - Типы данных (`Integer`, `String`) определяют формат столбцов
- Параметры вроде
primary_key
и nullable
настраивают ограничения Модели автоматически создают таблицы при вызове
Base.metadata.create_all()
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Оптимальное покрытие включает unit, integration и e2e тесты в пропорции 70/20/10. Тест-кейсы должны быть максимально простыми, быстрыми и фокусироваться на поведении, а не на реализации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Представления в Django — это Python-функции или классы, принимающие web-запросы и возвращающие ответы. Основные типы:
- FBV (Function-Based Views): Простые функции с ручной обработкой методов запроса
- CBV (Class-Based Views): Переиспользуемые классы с методами для разных HTTP-методов (get, post)
- Всегда принимают
Дополнительные возможности: декораторы, миксины, встроенные generic-классы для стандартных задач.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
from django.http import HttpResponse
from django.views import View
# Function-based view
def simple_view(request):
return HttpResponse("Hello World")
# Class-based view
class MyView(View):
def get(self, request):
return HttpResponse("GET request")
- FBV (Function-Based Views): Простые функции с ручной обработкой методов запроса
- CBV (Class-Based Views): Переиспользуемые классы с методами для разных HTTP-методов (get, post)
- Всегда принимают
request
и возвращают HttpResponse
(или подклассы) Дополнительные возможности: декораторы, миксины, встроенные generic-классы для стандартных задач.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Идемпотентность гарантирует, что повторные идентичные запросы не изменяют состояние системы после первого выполнения. Основные подходы:
- Idempotency-Key: Клиент генерирует уникальный ключ для операций изменения (POST/PUT/PATCH)
- Серверная валидация: Сервер кеширует ответы по ключу и возвращает их при повторах
- HTTP-методы: GET, PUT, DELETE идемпотентны по спецификации, POST требует доп. обработки
Для критических операций (платежи, транзакции) рекомендуется реализовывать механизм проверки дубликатов на стороне сервера.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
# Использование уникальных ключей идемпотентности
headers = {'Idempotency-Key': 'uuid-string'}
requests.post(url, headers=headers, json=data)
- Idempotency-Key: Клиент генерирует уникальный ключ для операций изменения (POST/PUT/PATCH)
- Серверная валидация: Сервер кеширует ответы по ключу и возвращает их при повторах
- HTTP-методы: GET, PUT, DELETE идемпотентны по спецификации, POST требует доп. обработки
Для критических операций (платежи, транзакции) рекомендуется реализовывать механизм проверки дубликатов на стороне сервера.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Анализ результатов помогает выявить узкие места в производительности, показывая точное время выполнения отдельных операций внутри функции.
Please open Telegram to view this post
VIEW IN TELEGRAM
Паттерн 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
Основные методы контроля выполнения цикла:
- Счетчик итераций: Ограничивает максимальное количество выполнений
- Изменяемое условие: Гарантирует выход при изменении ключевых переменных
- Таймаут: Для долгих операций добавляется проверка времени выполнения
Рекомендуется всегда предусматривать четкий критерий завершения и тестировать граничные условия.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
max_iterations = 1000
counter = 0
while condition and counter < max_iterations:
counter += 1
# Логика цикла
- Счетчик итераций: Ограничивает максимальное количество выполнений
- Изменяемое условие: Гарантирует выход при изменении ключевых переменных
- Таймаут: Для долгих операций добавляется проверка времени выполнения
Рекомендуется всегда предусматривать четкий критерий завершения и тестировать граничные условия.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Кортежи занимают меньше памяти и работают быстрее, что делает их предпочтительными для фиксированных данных, а списки лучше подходят для динамических коллекций.
Please open Telegram to view this post
VIEW IN TELEGRAM