from django.http import JsonResponse
def get_data(request):
return JsonResponse({'data': 'success'}, status=200) # Успешный запрос
Использование правильных статусов улучшает согласованность API и обработку ошибок.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
def test_addition():
assert 2 + 2 == 4 # Простой assert для проверки логики
Использование
setup
и teardown
методов помогает подготовить и очистить окружение. Моки и стабы изолируют тестируемый модуль от зависимостей.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Для установки пакета через pip используется команда
Флаг
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
pip install
с указанием имени пакета и опционально версии.
pip install requests # Установка последней версии
pip install django==4.2 # Конкретная версия
pip install -r requirements.txt # Установка из файла
Флаг
--user
устанавливает пакет для текущего пользователя, -e
- в режиме разработки.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
class SubsystemA:
def operation_a(self):
return "Subsystem A"
class Facade:
def __init__(self):
self._subsystem_a = SubsystemA()
def operation(self):
return f"Facade: {self._subsystem_a.operation_a()}"
Клиент работает только с Facade, не зная о внутренней реализации. Упрощает использование сложных систем.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
authlib
или oauthlib
, интегрирующиеся с популярными фреймворками.
from authlib.integrations.flask_client import OAuth
oauth = OAuth(app)
oauth.register(name='google', client_id='...', client_secret='...')
Настройка включает регистрацию приложения у провайдера, обработку callback-URL и проверку токенов. Для FastAPI/Django существуют аналогичные решения.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
asyncio.create_task()
запускает корутину как асинхронную задачу, позволяя ей выполняться конкурентно. Возвращает объект Task
, который можно использовать для отмены или ожидания завершения.
import asyncio
async def background_task():
await asyncio.sleep(1)
task = asyncio.create_task(background_task())
Задачи автоматически добавляются в цикл событий и выполняются без блокировки основного потока.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
def calculate_sum(a, b):
"""
Adds two numbers and returns the result.
Args:
a (int): First number
b (int): Second number
Returns:
int: Sum of a and b
"""
return a + b
Особенности:
- Доступна через
help(calculate_sum)
или __doc__
- Автоматически подхватывается IDE и генераторами документации
- Рекомендуется для публичных API и сложной логики
PEP 257 описывает стандарты оформления docstrings.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
__len__()
— специальный метод, вызываемый функцией len()
. Должен возвращать целое число ≥ 0, представляющее длину объекта.
class MyCollection:
def __len__(self):
return 10
Ключевые особенности:
- Обязателен для объектов, поддерживающих определение длины
- Вызывается автоматически при использовании
len(obj)
- Должен возвращать только целое число (int)
Реализуется в коллекциях (list, dict), пользовательских контейнерах и итерируемых объектах.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
try-except
внутри цикла, итерации продолжаются после обработки исключения. Это позволяет обрабатывать ошибки для отдельных элементов без прерывания всего цикла.
for item in data:
try:
process(item)
except ValueError:
handle_error()
Особенности работы:
- Блок
except
перехватывает исключения только для текущей итерации - Цикл продолжает работу со следующего элемента после обработки ошибки
- Позволяет реализовать устойчивую обработку данных с ошибками
Часто используется при обработке коллекций с потенциально проблемными элементами.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
()
, внутри которых перечисляются элементы через запятую. Если кортеж содержит один элемент, после него ставится запятая, чтобы отличить от обычного выражения в скобках.empty_tuple = () # Пустой кортеж
single_element_tuple = (42,) # Кортеж с одним элементом
multiple_elements_tuple = (1, 2, 3) # Кортеж с несколькими элементами
Кортеж также можно создать без скобок, просто перечислив элементы через запятую:
another_tuple = 4, 5, 6
Кортежи неизменяемы, поэтому после создания их элементы нельзя изменить.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
list[start:stop:step]
, где все параметры опциональны.
nums = [0, 1, 2, 3, 4]
nums[1:4] # [1, 2, 3] (элементы с 1 до 3 индекса)
nums[::2] # [0, 2, 4] (каждый второй элемент)
Особенности:
-
start
— включительно, stop
— исключительно - Отрицательные индексы отсчитываются с конца
- Возвращает новый список, не изменяя оригинал
- Работает аналогично для строк, кортежей и других последовательностей
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
asyncio.shield()
защищает корутину от отмены при вызове cancel()
. Позволяет завершить критически важные операции, даже если родительская задача была отменена.
task = asyncio.create_task(asyncio.shield(critical_operation()))
Основные особенности:
- Защищенная задача продолжит выполнение, но её await выбросит
CancelledError
- Не предотвращает отмену самой защищаемой корутины, только внешней обёртки
- Полезен для обязательных операций (сохранение данных, закрытие соединений)
Используется в связке с
try/except
для обработки отмены.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
from rest_framework import serializers, viewsets
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = '__all__'
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
Ключевые шаги:
1. Сериализаторы преобразуют модели в JSON и обратно
2. ViewSets объединяют логику для CRUD операций
3. Роутеры автоматически генерируют URL-адреса
Регистрация в
urls.py
:
router = DefaultRouter()
router.register(r'books', BookViewSet)
DRF добавляет авторизацию, пагинацию и документацию через Swagger.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Для обновления конкретного пакета:
Обновление всех устаревших пакетов:
Особенности:
- Флаг
- Рекомендуется использовать в виртуальном окружении
- Для системных пакетов может потребоваться
Перед обновлением лучше проверить совместимость версий.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
pip install --upgrade package_name
Обновление всех устаревших пакетов:
pip list --outdated # Просмотр устаревших пакетов
pip install --upgrade $(pip list --outdated | awk 'NR>2 {print $1}')
Особенности:
- Флаг
--upgrade
можно сократить до -U
- Рекомендуется использовать в виртуальном окружении
- Для системных пакетов может потребоваться
sudo
(не рекомендуется) Перед обновлением лучше проверить совместимость версий.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM