Дано целое число, преобразовать его в римскую цифру.
В этом решении мы создаем метод
Метод использует жадный алгоритм для поиска наибольшего римского числа, которое может быть вычтено из входного числа. Затем он вычитает это число и добавляет соответствующее римское число к результату.
Этот процесс повторяется до тех пор, пока входное число не станет равным нулю.
👉
В этом решении мы создаем метод
intToRoman, который принимает целое число в качестве аргумента и возвращает его римское представление в виде строки.Метод использует жадный алгоритм для поиска наибольшего римского числа, которое может быть вычтено из входного числа. Затем он вычитает это число и добавляет соответствующее римское число к результату.
Этот процесс повторяется до тех пор, пока входное число не станет равным нулю.
👉
⌨️ Шпаргалка по Python с примерами кода
👉
👉
Mix-in
Это паттерн проектирования в ООП, когда в цепочку наследования добавляется небольшой класс-помощник. Основная идея mix-in заключается в том, что можно создать класс с определенным функционалом и потом использовать его методы в других классах. Таким образом,
В этом примере мы создали класс
👉
Это паттерн проектирования в ООП, когда в цепочку наследования добавляется небольшой класс-помощник. Основная идея mix-in заключается в том, что можно создать класс с определенным функционалом и потом использовать его методы в других классах. Таким образом,
mix-in — это способ расширения функциональности классов без явного наследования.В этом примере мы создали класс
Mixin, который содержит метод mixin_method. Затем мы создали класс MyClass, который наследуется от Mixin и содержит свой метод my_method. Объект obj создан на основе класса MyClass и вызывает метод mixin_method, который определен в Mixin.👉
Визуализация процесса релиза CPython
На прошлой неделе я встретился с резидентом разработчиков CPython и менеджером по выпуску Лукашем Лангой, чтобы обсудить процесс выпуска CPython (подробно описанный в PEP 101). Все, что я узнал, я задокументировал ниже и буду предлагать такие улучшения, как введение дополнительных средств защиты для процесса выпуска и сборки программного обеспечения для процесса сборки и конечных собранных артефактов.
https://sethmlarson.dev/security-developer-in-residence-weekly-report-9
👉
На прошлой неделе я встретился с резидентом разработчиков CPython и менеджером по выпуску Лукашем Лангой, чтобы обсудить процесс выпуска CPython (подробно описанный в PEP 101). Все, что я узнал, я задокументировал ниже и буду предлагать такие улучшения, как введение дополнительных средств защиты для процесса выпуска и сборки программного обеспечения для процесса сборки и конечных собранных артефактов.
https://sethmlarson.dev/security-developer-in-residence-weekly-report-9
👉
Как мы версию Sanic’а повышали
Приветствую всех читателей, меня зовут Вадим, я — бэкенд-разработчик в компании Домклик. Я работаю в команде, которая разрабатывает CRM-систему для подготовки и осуществления ипотечных сделок. В этой статье я хотел бы поделиться своим интересным опытом мажорного повышения зависимостей в проекте, который свыше пяти лет находится в проде под ежедневной нагрузкой более 2000 RPS.
Предыстория
Итак, все сервисы нашей команды на бэке написаны на Python, большинство из них — с использованием фреймворка Sanic. До момента, приведшего впоследствии к этой статье, никаких серьёзных проблем с этим фреймворком мы не испытывали. Однако одним прекрасным декабрьским днём, когда сезонность оформления ипотечных сделок традиционно приводит к повышенной нагрузке на все сервисы Домклика, мы обнаружили проблему на центральном бэкенд-сервисе нашей системы. Суть этой проблемы заключалась в том, что в случайный момент времени воркеры приложения бесследно умирали, а у реализации мультипроцессинга в ис...
Приветствую всех читателей, меня зовут Вадим, я — бэкенд-разработчик в компании Домклик. Я работаю в команде, которая разрабатывает CRM-систему для подготовки и осуществления ипотечных сделок. В этой статье я хотел бы поделиться своим интересным опытом мажорного повышения зависимостей в проекте, который свыше пяти лет находится в проде под ежедневной нагрузкой более 2000 RPS.
Предыстория
Итак, все сервисы нашей команды на бэке написаны на Python, большинство из них — с использованием фреймворка Sanic. До момента, приведшего впоследствии к этой статье, никаких серьёзных проблем с этим фреймворком мы не испытывали. Однако одним прекрасным декабрьским днём, когда сезонность оформления ипотечных сделок традиционно приводит к повышенной нагрузке на все сервисы Домклика, мы обнаружили проблему на центральном бэкенд-сервисе нашей системы. Суть этой проблемы заключалась в том, что в случайный момент времени воркеры приложения бесследно умирали, а у реализации мультипроцессинга в ис...
Как мы версию Sanic’а повышали
Приветствую всех читателей, меня зовут Вадим, я — бэкенд-разработчик в компании Домклик. Я работаю в команде, которая разрабатывает CRM-систему для подготовки и осуществления ипотечных сделок. В этой статье я хотел бы поделиться своим интересным опытом мажорного повышения зависимостей в проекте, который свыше пяти лет находится в проде под ежедневной нагрузкой более 2000 RPS.
Предыстория
Итак, все сервисы нашей команды на бэке написаны на Python, большинство из них — с использованием фреймворка Sanic. До момента, приведшего впоследствии к этой статье, никаких серьёзных проблем с этим фреймворком мы не испытывали. Однако одним прекрасным декабрьским днём, когда сезонность оформления ипотечных сделок традиционно приводит к повышенной нагрузке на все сервисы Домклика, мы обнаружили проблему на центральном бэкенд-сервисе нашей системы. Суть этой проблемы заключалась в том, что в случайный момент времени воркеры приложения бесследно умирали, а у реализации мультипроцессинга в ис...
Приветствую всех читателей, меня зовут Вадим, я — бэкенд-разработчик в компании Домклик. Я работаю в команде, которая разрабатывает CRM-систему для подготовки и осуществления ипотечных сделок. В этой статье я хотел бы поделиться своим интересным опытом мажорного повышения зависимостей в проекте, который свыше пяти лет находится в проде под ежедневной нагрузкой более 2000 RPS.
Предыстория
Итак, все сервисы нашей команды на бэке написаны на Python, большинство из них — с использованием фреймворка Sanic. До момента, приведшего впоследствии к этой статье, никаких серьёзных проблем с этим фреймворком мы не испытывали. Однако одним прекрасным декабрьским днём, когда сезонность оформления ипотечных сделок традиционно приводит к повышенной нагрузке на все сервисы Домклика, мы обнаружили проблему на центральном бэкенд-сервисе нашей системы. Суть этой проблемы заключалась в том, что в случайный момент времени воркеры приложения бесследно умирали, а у реализации мультипроцессинга в ис...
Геттеры и сеттеры
Геттеры и сеттеры — это специальные методы класса, которые используются для управляемого доступа к атрибутам объекта. Они позволяют инкапсулировать реализацию класса и предоставить проверенный интерфейс для манипуляции данными.
— Геттер позволяет получить значение атрибута.
— Сеттер используется для установки значения атрибута.
Преимущества геттеров и сеттеров:
— Контроль доступа к атрибутам класса.
— Валидация данных.
— Возможность добавить дополнительную логику при установке/получении значений.
👉
Геттеры и сеттеры — это специальные методы класса, которые используются для управляемого доступа к атрибутам объекта. Они позволяют инкапсулировать реализацию класса и предоставить проверенный интерфейс для манипуляции данными.
— Геттер позволяет получить значение атрибута.
— Сеттер используется для установки значения атрибута.
Преимущества геттеров и сеттеров:
— Контроль доступа к атрибутам класса.
— Валидация данных.
— Возможность добавить дополнительную логику при установке/получении значений.
👉
Optional_return
Функция
Это позволяет лучше документировать поведение функции и дает подсказки при использовании ее результата, не опасаясь ошибки, если будет возвращен None.
В данном примере функция
👉
Функция
optional_return в модуле typing используется для определения функций, которые могут возвращать значение или None. Это позволяет лучше документировать поведение функции и дает подсказки при использовании ее результата, не опасаясь ошибки, если будет возвращен None.
В данном примере функция
find_user может вернуть имя пользователя, если оно найдено в списке, или None, если такого имени нет. Благодаря аннотации Optional[str] мы явно указываем, что возвращаемое значение может быть строкой или None.👉
Декораторы
Декораторы - это функции, которые изменяют поведение других функций. Они полезны для протоколирования, контроля доступа, мемоизации и многого другого.
Asyncio
Модуль asyncio предоставляет основу для асинхронного программирования. Это полезно для связанного с вводом-выводом и высокоуровневого структурированного сетевого кода.
👉
Декораторы - это функции, которые изменяют поведение других функций. Они полезны для протоколирования, контроля доступа, мемоизации и многого другого.
Asyncio
Модуль asyncio предоставляет основу для асинхронного программирования. Это полезно для связанного с вводом-выводом и высокоуровневого структурированного сетевого кода.
👉