Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
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
👍5
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
👍4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
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
👍9
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
👍9
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
__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
👍7
try-except
внутри цикла, итерации продолжаются после обработки исключения. Это позволяет обрабатывать ошибки для отдельных элементов без прерывания всего цикла.
for item in data:
try:
process(item)
except ValueError:
handle_error()
Особенности работы:
- Блок
except
перехватывает исключения только для текущей итерации - Цикл продолжает работу со следующего элемента после обработки ошибки
- Позволяет реализовать устойчивую обработку данных с ошибками
Часто используется при обработке коллекций с потенциально проблемными элементами.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
()
, внутри которых перечисляются элементы через запятую. Если кортеж содержит один элемент, после него ставится запятая, чтобы отличить от обычного выражения в скобках.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
👍6
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
👍9
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
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
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
👍4
Для обновления конкретного пакета:
Обновление всех устаревших пакетов:
Особенности:
- Флаг
- Рекомендуется использовать в виртуальном окружении
- Для системных пакетов может потребоваться
Перед обновлением лучше проверить совместимость версий.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ 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
👍7
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
from cryptography.fernet import Fernet # Симметричное шифрование
from Crypto.PublicKey import RSA # Асимметричное шифрование
import hashlib # Хеширование
Популярные решения:
-
cryptography
— современный стандарт для шифрования -
pycryptodome
— расширенная криптография (AES, RSA) -
hashlib
— встроенный модуль для хешей (SHA-256, MD5) -
bcrypt
— специализированная библиотека для хеширования паролей Для TLS/SSL используется встроенный модуль
ssl
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
class Subject:
def __init__(self):
self._observers = []
def attach(self, observer):
self._observers.append(observer)
def notify(self, message):
for observer in self._observers:
observer.update(message)
class Observer:
def update(self, message):
print(f"Received: {message}")
Ключевые моменты:
- Subject хранит список наблюдателей и уведомляет их при изменениях
- Observer определяет интерфейс для получения обновлений
- В Python часто реализуют через события или свойства (property)
Альтернативно можно использовать модуль
observable
из PyPI.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3