⚡️ Работаем с DOM
Для этого в Python существует модуль xml.dom или, с минимальной реализацией, xml.dom.minidom, о котором мы и поговорим.
Подробнее же об объектах можете почитать на сайте документации.
#миниурок #xml #dom
Для этого в Python существует модуль xml.dom или, с минимальной реализацией, xml.dom.minidom, о котором мы и поговорим.
parse(file)
— считывает и парсит модель из файла file. Возвращает Document из того же модуля. parseString(str)
— парсит DOM из строки. Возвращает тот же Document, что и parse.Подробнее же об объектах можете почитать на сайте документации.
#миниурок #xml #dom
⚡️ Собираем информацию об объекте
С помощью модуля inspect можно получить множество полезной информации о модуле, классе или функции. Это может быть, например, исходный код, сигнатура или название файла.
Если вам стало интересно, что ещё может этот модуль, то советую посетить документацию.
#миниурок #inspect
С помощью модуля inspect можно получить множество полезной информации о модуле, классе или функции. Это может быть, например, исходный код, сигнатура или название файла.
inspect.getsource(obj)
— возвращает исходный код модуля, класса, функции, или выбрасывает OSError.inspect.signature(func)
— показывает, как определены параметры у функции. Если вам стало интересно, что ещё может этот модуль, то советую посетить документацию.
#миниурок #inspect
⚡️ Задачка с собеседования | #Hard
Условие:
В этот раз вам необходимо создать код, который из списка с целыми числами создаёт все возможные подмножества. Важно, что бы подмножества не повторялись.
Примеры:
subsets([1, 2, 2]) -> [[], [1], [2], [1, 2], [2, 2], [1, 2, 2]]
subsets([1, 2, 3]) -> [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
subsets([0]) -> [[], [0]]
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
В этот раз вам необходимо создать код, который из списка с целыми числами создаёт все возможные подмножества. Важно, что бы подмножества не повторялись.
Примеры:
subsets([1, 2, 2]) -> [[], [1], [2], [1, 2], [2, 2], [1, 2, 2]]
subsets([1, 2, 3]) -> [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
subsets([0]) -> [[], [0]]
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Аннотация типов. Часть 3
Помимо того, что было описано в первой и второй части, вы можете создавать особые типы, псевдонимы и использовать обобщения.
Псевдонимы создаются так же, как и переменные,
Особые типы создаются при помощи NewType, на вход он принимает название и тип, который хранит.
Обобщения хранят в себе объекты, тип которых сразу неизвестен. Создавать собственные дженерики можно с помощью Generic и TypeVar.
Это — ещё не все. Подробнее вы, как обычно, можете почитать в документации.
#теория
Помимо того, что было описано в первой и второй части, вы можете создавать особые типы, псевдонимы и использовать обобщения.
Псевдонимы создаются так же, как и переменные,
name = type
.Особые типы создаются при помощи NewType, на вход он принимает название и тип, который хранит.
Обобщения хранят в себе объекты, тип которых сразу неизвестен. Создавать собственные дженерики можно с помощью Generic и TypeVar.
Это — ещё не все. Подробнее вы, как обычно, можете почитать в документации.
#теория
⚡️ Задачка с собеседования | #Medium
Условие:
Вам необходимо написать код, который бы возвращал сумму периметров всех квадратов в прямоугольнике, когда имеется n + 1 квадратов, расположенных так же, как на рисунке.
Примеры:
perimeter(1) -> 8
perimeter(5) -> 80 # 4 * (1 + 1 + 2 + 3 + 5 + 8) = 4 * 20 = 80
perimeter(20) -> 114624
Подсказка: воспользуйтесь последовательностью Фибоначчи.
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Вам необходимо написать код, который бы возвращал сумму периметров всех квадратов в прямоугольнике, когда имеется n + 1 квадратов, расположенных так же, как на рисунке.
Примеры:
perimeter(1) -> 8
perimeter(5) -> 80 # 4 * (1 + 1 + 2 + 3 + 5 + 8) = 4 * 20 = 80
perimeter(20) -> 114624
Подсказка: воспользуйтесь последовательностью Фибоначчи.
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Else в циклах
В Python есть интересная конструкция, позволяющая добавлять else в конец определения цикла while или for.
Вызывается блок кода только тогда, когда цикл закончил итерацию объекта. Иначе он просто игнорируется.
Такую вещь очень удобно использовать при поиске чего-либо, а подробнее о ней вы можете почитать тут.
#теория #for
В Python есть интересная конструкция, позволяющая добавлять else в конец определения цикла while или for.
Вызывается блок кода только тогда, когда цикл закончил итерацию объекта. Иначе он просто игнорируется.
Такую вещь очень удобно использовать при поиске чего-либо, а подробнее о ней вы можете почитать тут.
#теория #for
⚡️ Переводим объект в строку
Думаем, вы понимаете, что практически невозможно передать объект по http(s) протоколу в его чистом виде. Поэтому придумали marshmallow — модуль, переводящий объекты в текст и обратно.
Установка:
После вызываем у схемы
Это, конечно, ещё не всё. Подробнее о модуле можете вы почитать тут.
#миниурок #marshmallow
Думаем, вы понимаете, что практически невозможно передать объект по http(s) протоколу в его чистом виде. Поэтому придумали marshmallow — модуль, переводящий объекты в текст и обратно.
Установка:
pip install marshmallow
Schema
, fields
— самое важное, что вам надо знать. Schema
— базовый класс для всех схем с данными. Он состоит из полей, которые создаются с помощью fields
.После вызываем у схемы
dump
и load
, методы, позволяющие переводить строку в объект и обратно.Это, конечно, ещё не всё. Подробнее о модуле можете вы почитать тут.
#миниурок #marshmallow
⚡️ Задачка с собеседования | #Medium
Условие:
Вам необходимо написать функцию, которая переводит hls в rgb. Результат округлить до сотых.
Примеры:
convert_to_rgb(1, 1, 1) -> (1, 1.0, 1.0)
convert_to_rgb(0.9, 0.5, 0.5) -> (0.75, 0.25, 0.55)
convert_to_rgb(0.72, 0.624, 0.48) -> (0.56, 0.44, 0.8)
Подсказка: почитайте про модуль colorsys
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Вам необходимо написать функцию, которая переводит hls в rgb. Результат округлить до сотых.
Примеры:
convert_to_rgb(1, 1, 1) -> (1, 1.0, 1.0)
convert_to_rgb(0.9, 0.5, 0.5) -> (0.75, 0.25, 0.55)
convert_to_rgb(0.72, 0.624, 0.48) -> (0.56, 0.44, 0.8)
Подсказка: почитайте про модуль colorsys
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Кэшируем результат работы метода
Кэширование — действительно полезная вещь, если у вас есть тяжёлые математические операции. Оно уменьшает использование процессора, но потребляет ОЗУ.
Декораторы cache и cached_property как раз созданы для этой задачи. Они создают словарь по типу «Входные данные : результат» и сохраняют туда результат работы функции.
cached_property — это то же самое, что и
Если вы пользуетесь версией старее python 3.9, то воспользуйтесь декоратором lru_cache.
Если вам стало интересно, посетите документацию.
#миниурок #cache
Кэширование — действительно полезная вещь, если у вас есть тяжёлые математические операции. Оно уменьшает использование процессора, но потребляет ОЗУ.
Декораторы cache и cached_property как раз созданы для этой задачи. Они создают словарь по типу «Входные данные : результат» и сохраняют туда результат работы функции.
cached_property — это то же самое, что и
@cache @property
. И, поскольку это свойство, используется только в классах.Если вы пользуетесь версией старее python 3.9, то воспользуйтесь декоратором lru_cache.
Если вам стало интересно, посетите документацию.
#миниурок #cache
⚡️ Задачка с собеседования | #Easy
Условие:
В этот раз вам необходимо узнать, является ли число — числом Армстронга?
Примеры:
num_armstrong(7) -> True
num_armstrong(371) -> True # 3^3 + 7^3 + 1^3 = 371
num_armstrong(120) -> False
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
В этот раз вам необходимо узнать, является ли число — числом Армстронга?
Примеры:
num_armstrong(7) -> True
num_armstrong(371) -> True # 3^3 + 7^3 + 1^3 = 371
num_armstrong(120) -> False
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Open и режимы чтения/записи
Функция open используется для работы с файловой системой и у неё есть несколько режимов работы. О них мы сейчас и поговорим.
r — открывает файл для чтения и только. w — открывает файл для записи, но перед этим полностью его очищает.
x — создаёт новый файл или выдаёт ошибку, если он уже существует. a — открывает файл для записи добавляя в конец данные. Выдаёт ошибку, если файла не существует.
+ — дополнение, открывает файл для чтения и записи. Разница между w+ и r+ в том, что в первом случае файл очищается.
b, t — открывает файл в бинарном или текстовом режиме. То есть позволяет работать с байтами или с текстом. По умолчанию — t.
#теория
Функция open используется для работы с файловой системой и у неё есть несколько режимов работы. О них мы сейчас и поговорим.
r — открывает файл для чтения и только. w — открывает файл для записи, но перед этим полностью его очищает.
x — создаёт новый файл или выдаёт ошибку, если он уже существует. a — открывает файл для записи добавляя в конец данные. Выдаёт ошибку, если файла не существует.
+ — дополнение, открывает файл для чтения и записи. Разница между w+ и r+ в том, что в первом случае файл очищается.
b, t — открывает файл в бинарном или текстовом режиме. То есть позволяет работать с байтами или с текстом. По умолчанию — t.
#теория