Для импорта модуля из пакета используется точечная нотация, указывающая иерархию вложенности.  
- Абсолютный импорт указывает полный путь от корня проекта
- Относительный импорт (через точки) возможен внутри пакета:
Пакет должен содержать файл
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  Python собеседования
from package.subpackage import module
from package.subpackage.module import specific_function
- Абсолютный импорт указывает полный путь от корня проекта
- Относительный импорт (через точки) возможен внутри пакета:
from .sibling_module import helper
Пакет должен содержать файл
__init__.py (может быть пустым) для распознавания его как python-пакета. Импорт выполняется через поиск в sys.path.Ставь
Больше ответов на сайте
Please open Telegram to view this post
    VIEW IN TELEGRAM
  ❤3
  Оператор 
Здесь
Оператор
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  Python собеседования
not инвертирует логическое значение выражения. Если выражение истинно, not возвращает False, и наоборот. Часто используется в условных конструкциях для проверки обратных условий.  
x = False
if not x:
print("Условие выполнено")
Здесь
not x превращает False в True, и блок кода выполняется.  
value = 10
if not value > 20:
print("Значение не больше 20")
Оператор
not применяется к результату сравнения value > 20 (который False), делая условие истинным.Ставь
Больше ответов на сайте
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍6❤2
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍5
  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
  👍6
  Метод 
Если
✈️  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
  👍5
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍4
  Функция 
Работает только с целыми числами. Для отрицательных чисел возвращает строку с минусом перед префиксом.
Аналог встроенного форматирования: 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
  👍3
  Библиотека 
Поддерживает различные типы данных: строки, хеши, списки, множества.
Для транзакций используется
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  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
  👍5
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍2
  Для установки конкретной версии пакета используется синтаксис 
Можно задать диапазон версий с помощью дополнительных операторов:
Допустимы модификаторы
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  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
  👍5
  Команда 
Для отмены изменений в конкретном файле:
Флаг
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  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
  👍2
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍3
  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
  👍4
  Функция 
Полезно для мониторинга или отладки асинхронного кода. Если передать аргумент
Не включает завершенные или отмененные задачи.
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  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
  👍3
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍3
  Метод 
Результат динамически связан с исходным словарем — изменения отражаются сразу.
Можно преобразовать в список:
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  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
  👍4
  Паттерн 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
  👍3
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍5
  Для получения значения по ключу в словаре используется синтаксис 
Метод
Для проверки наличия ключа используется оператор
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  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
  👍4
  Генераторы позволяют загружать данные по требованию через 
Каждый вызов
Подходит для обработки больших файлов, потоковых данных и бесконечных последовательностей.
Ставь👍 , если было полезно!
Больше ответов на сайте👈 
✈️  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
  👍5
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍2
  