__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
asyncio.TimeoutError
возникает при превышении времени выполнения асинхронной операции. Для обработки таймаутов используйте asyncio.wait_for()
:
try:
result = await asyncio.wait_for(coroutine(), timeout=5.0)
except asyncio.TimeoutError:
handle_timeout()
Ключевые моменты:
- Применяется для ограничения времени выполнения корутин
- Отличается от встроенного
TimeoutError
(синхронные операции) - Вместе с
asyncio.shield()
позволяет контролировать прерывание Таймауты особенно важны для сетевых запросов и внешних API.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
value = 42 # int
value = "text" # str
Характеристики:
- Проверка типов происходит при выполнении операций
- Гибкость кода ценой возможных runtime-ошибок
- Использует duck typing
Отличается от статической типизации (C++, Java), где типы проверяются до запуска программы.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
__delattr__()
вызывается при попытке удаления атрибута через оператор del
. Позволяет кастомизировать поведение при удалении:
class Example:
def __delattr__(self, name):
print(f"Deleting {name}")
object.__delattr__(self, name)
Ключевые особенности:
- Требует явного вызова
object.__delattr__()
для реального удаления - Может блокировать удаление критичных атрибутов
- Вызывается только для оператора
del
, не влияет на delattr()
Используется редко, в основном для сложных деструкторов или защиты атрибутов.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
union()
или оператор |
:
set1 = {1, 2}
set2 = {2, 3}
merged = set1.union(set2) # {1, 2, 3}
Альтернативные варианты:
- update() модифицирует исходное множество
- | создает новое множество
- {*set1, *set2} работает с Python 3.5+
Все методы автоматически удаляют дубликаты.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
git fetch
загружает изменения из удаленного репозитория без слияния с локальной веткой, обновляя только ссылки в .git/refs/remotes
.
git fetch origin # Загружает изменения без модификации рабочей директории
git pull
= git fetch
+ git merge
— автоматически сливает загруженные изменения с текущей веткой. Ключевые отличия:
-
fetch
безопаснее — позволяет проверить изменения перед слиянием -
pull
может создать конфликт слияния без предупреждения - Для проверки изменений после fetch используйте
git log origin/branch
Рекомендуется использовать
fetch
+ ручное слияние в рабочих проектах.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
asyncio.subprocess
позволяет запускать и управлять дочерними процессами асинхронно. Работает через создание подпроцессов с неблокирующим вводом-выводом, интегрируясь в цикл событий asyncio. Основные классы и функции:
-
create_subprocess_exec
— запускает процесс из переданных аргументов. -
create_subprocess_shell
— запускает процесс через оболочку. Процесс общается через стандартные потоки (stdin, stdout, stderr), доступные как асинхронные потоки.
import asyncio
async def run_command():
proc = await asyncio.create_subprocess_exec(
'echo', 'hello',
stdout=asyncio.subprocess.PIPE
)
stdout, _ = await proc.communicate()
print(stdout.decode())
Код запускает процесс
echo
и читает его вывод асинхронно. communicate()
ожидает завершения процесса и возвращает вывод.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3