Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Полиморфизм через наследование позволяет разным классам использовать методы с одинаковыми именами, но разной реализацией. Для этого базовый класс определяет интерфейс, а дочерние классы переопределяют методы.
При вызове
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
class Animal:
def make_sound(self):
raise NotImplementedError("Subclasses must implement this method")
class Dog(Animal):
def make_sound(self):
return "Woof!"
class Cat(Animal):
def make_sound(self):
return "Meow!"
При вызове
make_sound()
у объекта Dog
или Cat
выполняется соответствующая реализация, несмотря на одинаковый метод в базовом классе.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Для объединения двух кортежей используется оператор
Кортежи неизменяемы, поэтому операция не модифицирует исходные объекты, а возвращает новый. Также можно использовать
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
+
, создающий новый кортеж с элементами обоих исходных.
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined = tuple1 + tuple2 # (1, 2, 3, 4, 5, 6)
Кортежи неизменяемы, поэтому операция не модифицирует исходные объекты, а возвращает новый. Также можно использовать
tuple(itertools.chain(tuple1, tuple2))
для сложных сценариев.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
В Django URL-шаблоны определяют, какие view-функции обрабатывают запросы по конкретным путям. Они задаются в
Маршруты проверяются сверху вниз. Можно группировать URL через
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
urls.py
через path()
или re_path()
(для regex).
from django.urls import path
from . import views
urlpatterns = [
path('articles/', views.article_list), # Обработка /articles/
path('articles/<int:id>/', views.article_detail), # Динамический параметр id
]
Маршруты проверяются сверху вниз. Можно группировать URL через
include()
, передавая часть маршрутизации в приложение. Именованные пути (name='article-list') позволяют генерировать URL без жесткого кодирования.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Команда
Если нужно отменить несколько коммитов, можно указать диапазон:
После выполнения откроется редактор для сообщения нового коммита. Используется, когда нужно безопасно отменить изменения в истории, не перезаписывая его.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
git revert
отменяет изменения указанного коммита, создавая новый коммит с инвертированными изменениями.
git revert <commit-hash> # Создает новый коммит, отменяющий изменения
Если нужно отменить несколько коммитов, можно указать диапазон:
git revert <oldest-commit-hash>..<latest-commit-hash> # Отменяет все коммиты в диапазоне
После выполнения откроется редактор для сообщения нового коммита. Используется, когда нужно безопасно отменить изменения в истории, не перезаписывая его.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Для защиты API применяют аутентификацию и авторизацию. Основные методы:
Дополнительно используют HTTPS, ограничение запросов (rate limiting) и проверку CORS. Для сложных сценариев подходят OAuth2 или библиотеки вроде
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
# JWT-токены (FastAPI/Flask)
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
# API-ключи в заголовках
API_KEY = "secret_key"
def validate_key(api_key: str):
if api_key != API_KEY:
raise HTTPException(status_code=403)
Дополнительно используют HTTPS, ограничение запросов (rate limiting) и проверку CORS. Для сложных сценариев подходят OAuth2 или библиотеки вроде
Authlib
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Паттерн Iterator в Python реализуется через методы
Встроенные типы (list, dict) уже поддерживают итерацию. Для ленивых вычислений удобны генераторы (yield).
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
__iter__()
и __next__()
. Класс становится итерируемым, если __iter__()
возвращает сам объект, а __next__()
возвращает следующий элемент или вызывает StopIteration
.
class Counter:
def __init__(self, max):
self.max = max
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current >= self.max:
raise StopIteration
self.current += 1
return self.current - 1
Встроенные типы (list, dict) уже поддерживают итерацию. Для ленивых вычислений удобны генераторы (yield).
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Для измерения покрытия кода тестами используется библиотека
Метрика показывает, какая часть кода была выполнена во время тестов. Можно исключить файлы через
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
coverage
.
coverage run -m pytest # Запуск тестов с отслеживанием покрытия
coverage report # Вывод отчета в консоль
coverage html # Генерация HTML-отчета
Метрика показывает, какая часть кода была выполнена во время тестов. Можно исключить файлы через
.coveragerc
. Оптимальное покрытие — 80-100%, но важнее осмысленность тестов.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Функция
Эквивалентна одновременному выполнению
Полезна при разбиении значений на части (например, секунды в минуты и секунды).
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
divmod()
принимает два числа и возвращает кортеж из частного и остатка от деления.
result = divmod(10, 3) # (3, 1)
Эквивалентна одновременному выполнению
//
(целочисленное деление) и %
(остаток). Работает с целыми и вещественными числами.
divmod(10.5, 3) # (3.0, 1.5)
Полезна при разбиении значений на части (например, секунды в минуты и секунды).
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Для проверки наличия элемента в кортеже используется оператор
Аналогично работает с
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
in
, который возвращает True
или False
.
my_tuple = (1, 2, 3, 'a', 'b')
contains_two = 2 in my_tuple # True
contains_z = 'z' in my_tuple # False
Аналогично работает с
not in
для проверки отсутствия. Метод эффективен и читаем, подходит для любых итерируемых объектов.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
Декораторы для проверки прав доступа оборачивают функции, проверяя аутентификацию или права пользователя перед выполнением.
Пример применения:
Такой подход централизует проверки и сохраняет чистоту бизнес-логики.
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
def admin_required(func):
def wrapper(user, *args, **kwargs):
if not user.is_admin:
raise PermissionError("Admin access required")
return func(user, *args, **kwargs)
return wrapper
Пример применения:
@admin_required
def delete_user(user, username):
# Логика удаления
Такой подход централизует проверки и сохраняет чистоту бизнес-логики.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Чтобы прочитать файл с определенной позиции, можно использовать метод
Метод
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
seek()
для перемещения файлового указателя перед чтением. После установки позиции данные считываются методом read()
.
with open('file.txt', 'r') as file:
file.seek(100) # Переместить указатель на 100-й байт
data = file.read() # Чтение с текущей позиции
Метод
seek()
принимает смещение в байтах, а второй аргумент (необязательный) определяет точку отсчета (0 — начало файла, 1 — текущая позиция, 2 — конец файла).Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Метод
По умолчанию
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
__dir__()
возвращает список атрибутов и методов объекта. Его можно переопределить в пользовательских классах, чтобы изменить поведение встроенной функции dir()
.
class Example:
def __dir__(self):
return ['custom_attr', 'custom_method']
obj = Example()
print(dir(obj)) # Выведет ['custom_attr', 'custom_method']
По умолчанию
__dir__()
включает атрибуты класса, его методы и унаследованные члены. Переопределение полезно для ограничения или кастомизации вывода.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Функция
В Python 3.10+ рекомендуется использовать
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ Python собеседования
asyncio.get_event_loop()
возвращает текущий событийный цикл для данного контекста выполнения. Если цикла нет, создаёт новый и устанавливает его как текущий.
loop = asyncio.get_event_loop() # Получает текущий цикл или создаёт новый
В Python 3.10+ рекомендуется использовать
asyncio.run()
для верхнеуровневого кода вместо ручного управления циклом. Метод устарел для создания новых циклов в пользу asyncio.new_event_loop()
.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3