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
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Оператор
При проверке условий
Это полезно для проверки цепочки условий, где последующие зависят от предыдущих.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
and
в условных выражениях выполняет ленивое вычисление: возвращает первый ложный операнд или последний, если все истинны.
result = x and y # Если x ложно, вернётся x, иначе y
При проверке условий
and
останавливается на первом False
, не вычисляя остальные.
if a and b: # Если a == False, b не проверяется
...
Это полезно для проверки цепочки условий, где последующие зависят от предыдущих.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Файл
Установка зависимостей:
Для генерации файла из текущего окружения:
Формат версий:
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
requirements.txt
содержит список зависимостей Python-проекта. Каждая строка — имя пакета с опциональным ограничением версии.
# requirements.txt
requests==2.25.1
flask>=1.1.0
pytest
Установка зависимостей:
pip install -r requirements.txt
Для генерации файла из текущего окружения:
pip freeze > requirements.txt
Формат версий:
==
(точно), >=
(минимум), <
(максимум).Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Методы
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
__getitem__()
и __setitem__()
позволяют реализовать доступ к элементам объекта по индексу или ключу, как в списках или словарях.
class CustomContainer:
def __getitem__(self, key):
return self.data[key] # Возвращает значение по ключу/индексу
def __setitem__(self, key, value):
self.data[key] = value # Устанавливает значение по ключу/индексу
__getitem__()
вызывается при обращении obj[key]
, а __setitem__()
— при присваивании obj[key] = value
. Позволяет эмулировать поведение встроенных коллекций.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
asyncio.Event
позволяет синхронизировать корутины через механизм событий. Объект находится в неактивном состоянии (False) до явного
вызова set().
event = asyncio.Event()
async def waiter():
await event.wait() # Ожидает установки флага
print("Event triggered")
async def setter():
await asyncio.sleep(1)
event.set() # Разблокирует все ожидающие корутины
Основные методы:
-
wait()
— приостанавливает выполнение до срабатывания события -
set()/clear()
— активирует/сбрасывает событие -
is_set()
— проверяет состояние флага Используется для координации между задачами, когда одна должна уведомить другие о наступлении условия.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Для вставки данных в таблицу используется SQL-запрос
Ключевые моменты:
- Указание имени таблицы и столбцов (опционально)
- Перечисление значений в порядке столбцов
- Возможность множественной вставки через несколько
Для безопасной вставки из Python рекомендуется использовать параметризованные запросы.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
INSERT INTO
. Синтаксис зависит от структуры таблицы и количества добавляемых значений.
INSERT INTO table_name (column1, column2)
VALUES (value1, value2);
Ключевые моменты:
- Указание имени таблицы и столбцов (опционально)
- Перечисление значений в порядке столбцов
- Возможность множественной вставки через несколько
VALUES
INSERT INTO users (name, age)
VALUES ('Alex', 25), ('Anna', 30);
Для безопасной вставки из Python рекомендуется использовать параметризованные запросы.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Django использует систему миграций для управления изменениями моделей БД. Основные команды:
Процесс работы:
1. После изменения моделей создается миграция (файл в папке migrations)
2. Миграция применяется к БД командой migrate
3. Можно откатить миграцию через
Для сложных случаев используется ручное редактирование миграционных файлов. Миграции позволяют синхронизировать структуру БД между разными окружениями.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
python manage.py makemigrations # Создает миграции на основе изменений моделей
python manage.py migrate # Применяет миграции к базе данных
Процесс работы:
1. После изменения моделей создается миграция (файл в папке migrations)
2. Миграция применяется к БД командой migrate
3. Можно откатить миграцию через
migrate app_name migration_name
Для сложных случаев используется ручное редактирование миграционных файлов. Миграции позволяют синхронизировать структуру БД между разными окружениями.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Для объединения веток в Git используются две основные стратегии: merge и rebase.
Создает новый коммит слияния, сохраняя историю изменений.
Перемещает коммиты feature-branch на вершину main, создавая линейную историю.
Конфликты разрешаются вручную в обоих случаях. Merge безопаснее для публичных веток, rebase — для локальной очистки истории.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
git checkout main # Переключение на целевую ветку
git merge feature-branch # Слияние feature-branch в main
Создает новый коммит слияния, сохраняя историю изменений.
git checkout feature-branch
git rebase main # Перебазирование на основную ветку
Перемещает коммиты feature-branch на вершину main, создавая линейную историю.
Конфликты разрешаются вручную в обоих случаях. Merge безопаснее для публичных веток, rebase — для локальной очистки истории.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
cProfile
— встроенный модуль для профилирования кода. Показывает время выполнения функций и количество вызовов.
import cProfile
def test_func():
# Код для профилирования
pass
cProfile.run('test_func()') # Запуск профилирования
Основные параметры вывода:
-
ncalls
— количество вызовов -
tottime
— общее время в функции -
cumtime
— время с учетом вложенных вызовов Для сохранения результатов в файл:
cProfile.run('test_func()', 'profile_stats')
Анализ результатов через
pstats
:
import pstats
p = pstats.Stats('profile_stats')
p.sort_stats('cumtime').print_stats(10) # Топ-10 медленных функций
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Для защиты веб-приложения от утечки данных необходимо реализовать многоуровневую безопасность:
Шифрование трафика через TLS/SSL.
Использование параметризованных запросов вместо форматирования строк.
Хранение только хешей паролей с солью.
Дополнительные меры: валидация ввода, ограничение прав доступа, регулярное обновление зависимостей.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
# HTTPS обязателен
SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
Шифрование трафика через TLS/SSL.
# Защита от инъекций
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
Использование параметризованных запросов вместо форматирования строк.
# Хеширование паролей
from django.contrib.auth.hashers import make_password
hashed_pw = make_password('password123')
Хранение только хешей паролей с солью.
Дополнительные меры: валидация ввода, ограничение прав доступа, регулярное обновление зависимостей.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Паттерн Bridge разделяет абстракцию и реализацию, позволяя им изменяться независимо.
Абстракция делегирует работу объекту реализации. Позволяет изменять реализацию без модификации клиентского кода. Подходит для поддержки разных платформ или API.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
class Abstraction:
def __init__(self, implementation):
self._implementation = implementation
def operation(self):
return f"Abstraction + {self._implementation.operation_impl()}"
class Implementation:
def operation_impl(self):
raise NotImplementedError
class ConcreteImplementationA(Implementation):
def operation_impl(self):
return "ConcreteImplementationA"
Абстракция делегирует работу объекту реализации. Позволяет изменять реализацию без модификации клиентского кода. Подходит для поддержки разных платформ или API.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Для удаления пакета через pip используется команда
После выполнения команды pip запросит подтверждение удаления. Для автоматического подтверждения можно добавить флаг
Удаление затрагивает только указанный пакет, не затрагивая его зависимости. Для просмотра списка установленных пакетов перед удалением можно использовать
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
uninstall
с указанием имени пакета:
pip uninstall package_name
После выполнения команды pip запросит подтверждение удаления. Для автоматического подтверждения можно добавить флаг
-y
:
pip uninstall package_name -y
Удаление затрагивает только указанный пакет, не затрагивая его зависимости. Для просмотра списка установленных пакетов перед удалением можно использовать
pip list
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
В
Ключевые особенности:
- Задачи выполняются конкурентно в одном потоке
- Позволяют отслеживать состояние через
- Можно отменять через
Используются для параллельного запуска корутин без блокировки основного потока.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
asyncio
Task — это объект, который оборачивает корутину и планирует её выполнение в цикле событий.
import asyncio
async def my_coroutine():
await asyncio.sleep(1)
return "Done"
task = asyncio.create_task(my_coroutine()) # Создание задачи
Ключевые особенности:
- Задачи выполняются конкурентно в одном потоке
- Позволяют отслеживать состояние через
done()
, result()
- Можно отменять через
cancel()
Используются для параллельного запуска корутин без блокировки основного потока.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM