Please open Telegram to view this post
VIEW IN TELEGRAM
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
Метод
Если
✈️ 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция
Работает только с целыми числами. Для отрицательных чисел возвращает строку с минусом перед префиксом.
Аналог встроенного форматирования: 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
Библиотека
Поддерживает различные типы данных: строки, хеши, списки, множества.
Для транзакций используется
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Для установки конкретной версии пакета используется синтаксис
Можно задать диапазон версий с помощью дополнительных операторов:
Допустимы модификаторы
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ 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
Команда
Для отмены изменений в конкретном файле:
Флаг
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ 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
Please open Telegram to view this post
VIEW IN TELEGRAM
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
Функция
Полезно для мониторинга или отладки асинхронного кода. Если передать аргумент
Не включает завершенные или отмененные задачи.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
asyncio.all_tasks()
возвращает множество всех выполняющихся задач в текущем цикле событий.
import asyncio
async def example():
await asyncio.sleep(1)
tasks = asyncio.all_tasks() # Получение всех активных задач
Полезно для мониторинга или отладки асинхронного кода. Если передать аргумент
loop
, вернет задачи конкретного цикла.
current_loop = asyncio.get_running_loop()
tasks = asyncio.all_tasks(current_loop)
Не включает завершенные или отмененные задачи.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод
Результат динамически связан с исходным словарем — изменения отражаются сразу.
Можно преобразовать в список:
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
keys()
возвращает представление всех ключей в словаре.
d = {'a': 1, 'b': 2}
print(d.keys()) # dict_keys(['a', 'b'])
Результат динамически связан с исходным словарем — изменения отражаются сразу.
d['c'] = 3
print(d.keys()) # dict_keys(['a', 'b', 'c'])
Можно преобразовать в список:
list(d.keys())
. Работает за O(1), не создает копию данных.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Паттерн State позволяет объекту изменять поведение при смене внутреннего состояния. Реализуется через отдельные классы-состояния и контекст, который делегирует им работу.
Каждое состояние инкапсулирует свою логику, а переходы между состояниями выполняются внутри методов
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
class State:
def handle(self, context):
pass
class ConcreteStateA(State):
def handle(self, context):
context.state = ConcreteStateB()
class ConcreteStateB(State):
def handle(self, context):
context.state = ConcreteStateA()
class Context:
def __init__(self):
self.state = ConcreteStateA()
def request(self):
self.state.handle(self)
Каждое состояние инкапсулирует свою логику, а переходы между состояниями выполняются внутри методов
handle()
. Контекст хранит текущее состояние и вызывает его методы.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Для получения значения по ключу в словаре используется синтаксис
Метод
Для проверки наличия ключа используется оператор
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
dict[key]
или метод dict.get()
.
d = {'a': 1, 'b': 2}
print(d['a']) # 1 (KeyError если ключа нет)
print(d.get('c', 0)) # 0 (возвращает default вместо ошибки)
Метод
setdefault()
возвращает значение и добавляет ключ с default-значением, если его нет.
value = d.setdefault('c', 3) # Возвращает 3, добавляет 'c': 3 в словарь
Для проверки наличия ключа используется оператор
in
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Генераторы позволяют загружать данные по требованию через
Каждый вызов
Подходит для обработки больших файлов, потоковых данных и бесконечных последовательностей.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
yield
, экономя память.
def lazy_load(file_path):
with open(file_path) as file:
for line in file:
yield line.strip() # Постепенная обработка
Каждый вызов
next()
или итерация возвращает очередной элемент без загрузки всего набора.
data_loader = lazy_load('large_file.txt')
print(next(data_loader)) # Только первая строка в памяти
Подходит для обработки больших файлов, потоковых данных и бесконечных последовательностей.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Функция
Функция
Обе функции работают с любыми итерируемыми объектами (списки, кортежи, генераторы). Лениво вычисляются до первого
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
all()
возвращает True
, если все элементы итерируемого объекта истинны (или если он пуст). python
data = [True, 1, 'text']
print(all(data)) # True
Функция
any()
возвращает True
, если хотя бы один элемент истинный. python
data = [False, 0, '']
print(any(data)) # False
Обе функции работают с любыми итерируемыми объектами (списки, кортежи, генераторы). Лениво вычисляются до первого
False
(для all) или True
(для any).Ставь
Больше ответов на сайте
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