⚡️ Создаём декораторы для функций
Декоратор — «обёртка» над другой функцией. Она позволяет менять поведение функции, при этом не меняя код.
Чаще всего его можно встретить при разработке веб приложений (боты или сайты, например)
Начнём с того, что декоратор — сама по себе функция. Он создаёт внутри себя метод, который вызывает переданную функцию. После, декоратор возвращает только что созданный метод.
Понимаю, звучит всё очень сложно, так что будет в разы легче разобраться на примере.
Декораторы ещё могут принимать аргументы и быть классами, но это уже совсем другая тема — разберём её в другой раз.
#теория #декоратор
Декоратор — «обёртка» над другой функцией. Она позволяет менять поведение функции, при этом не меняя код.
Чаще всего его можно встретить при разработке веб приложений (боты или сайты, например)
Начнём с того, что декоратор — сама по себе функция. Он создаёт внутри себя метод, который вызывает переданную функцию. После, декоратор возвращает только что созданный метод.
Понимаю, звучит всё очень сложно, так что будет в разы легче разобраться на примере.
Декораторы ещё могут принимать аргументы и быть классами, но это уже совсем другая тема — разберём её в другой раз.
#теория #декоратор
Что выведет код выше?
Anonymous Quiz
8%
1 2 Ошибку
43%
1 Ошибку 2
20%
1 2
8%
Ошибку 1 2
21%
Узнать ответ
This media is not supported in your browser
VIEW IN TELEGRAM
АЙТИШНИК?
Устал часами искать нужную инфу?
🌍 Канал ITYoutubers — отборные видео мира IT со всего рунета.
Расскажет про: новости, верстку, фронт и бэк энд, дизайн и многое другое.
🔥 ITYoutubers — твой личный помощник в подборе правильного медиаконтента.
Подпишись и начни развиваться в IT ещё быстрее!
Устал часами искать нужную инфу?
🌍 Канал ITYoutubers — отборные видео мира IT со всего рунета.
Расскажет про: новости, верстку, фронт и бэк энд, дизайн и многое другое.
🔥 ITYoutubers — твой личный помощник в подборе правильного медиаконтента.
Подпишись и начни развиваться в IT ещё быстрее!
⚡️ Создаём графическое приложение
pyglet — модуль, позволяющий легко создавать программы, взаимодействующие с пользователем через изображение. Он работает в Windows, Linux и даже в OS X.
Чаще всего его используют для разработки игры или других насыщенных визуальными данными приложений. Вот здесь, например, можно посмотреть игру от одного из пользователей reddit
Библиотека поддерживает работу с окнами, подгрузку изображений, аудио, видео, обработку событий, джойстики, OpenGL и ещё кучу всяких функций.
Хотите изучить его подробнее? Ловите ссылку на документацию.
#миниурок #pyglet
pyglet — модуль, позволяющий легко создавать программы, взаимодействующие с пользователем через изображение. Он работает в Windows, Linux и даже в OS X.
Чаще всего его используют для разработки игры или других насыщенных визуальными данными приложений. Вот здесь, например, можно посмотреть игру от одного из пользователей reddit
Библиотека поддерживает работу с окнами, подгрузку изображений, аудио, видео, обработку событий, джойстики, OpenGL и ещё кучу всяких функций.
Хотите изучить его подробнее? Ловите ссылку на документацию.
#миниурок #pyglet
⚡️ Задачка с собеседования | #Easy
Условие:
Необходимо написать функцию, которая будет принимать два массива. Её задача — отсортировать элементы из первого массива, в зависимости от их повторяемости в втором.
Пример — на изображении выше.
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Необходимо написать функцию, которая будет принимать два массива. Её задача — отсортировать элементы из первого массива, в зависимости от их повторяемости в втором.
Пример — на изображении выше.
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Классы-декораторы
Ранее мы уже рассказывали о функциях декораторах, теперь расскажем о классах.
Для начала стоит ответить на вопрос, знаете ли вы, в чём разница между функцией и классом? Она заключается в методе __call__.
Таким образом, если мы создадим класс с __call__, то мы получим ту же самую функцию, которую можно использовать как декоратор.
Основное преимущество такого способа в том, что мы можем задавать данные при инициализации декоратора. Разве это не круто?
#теория #декоратор
Ранее мы уже рассказывали о функциях декораторах, теперь расскажем о классах.
Для начала стоит ответить на вопрос, знаете ли вы, в чём разница между функцией и классом? Она заключается в методе __call__.
Таким образом, если мы создадим класс с __call__, то мы получим ту же самую функцию, которую можно использовать как декоратор.
Основное преимущество такого способа в том, что мы можем задавать данные при инициализации декоратора. Разве это не круто?
#теория #декоратор
⚡️ Упрощаем создание декораторов
Помните, мы уже говорили про создание декораторов и классов-декораторов. В этот раз мы поговорим о декораторе, который используется для создания этих самых декораторов.
Для этого мы воспользуемся декоратором
Её задача — выдавать себя за настоящую функцию, которая использует декоратор. То есть, она подменивает значения name и doc на значения реальной функции.
Если мы попытаемся получить имя или документацию функции, использующую декоратор, то мы получим все значения wrapper. Это может сбить некоторые редакторы и программистов с толку, поэтому многие используют
#миниурок #functools #декоратор
Помните, мы уже говорили про создание декораторов и классов-декораторов. В этот раз мы поговорим о декораторе, который используется для создания этих самых декораторов.
Для этого мы воспользуемся декоратором
@wraps
из модуля functools — это упрощение для функции functools.update_wrapper.Её задача — выдавать себя за настоящую функцию, которая использует декоратор. То есть, она подменивает значения name и doc на значения реальной функции.
Если мы попытаемся получить имя или документацию функции, использующую декоратор, то мы получим все значения wrapper. Это может сбить некоторые редакторы и программистов с толку, поэтому многие используют
@wraps
, как на примере выше.#миниурок #functools #декоратор
⚡️ Задачка с собеседования | #Medium
Условие:
Нужно написать код, который будет переводить римские символы в привычную нам десятичную систему (про символы можно почитать тут).
Пример:
roman_to_int('XXI') -> 21
roman_to_int('IV') -> 4
roman_to_int('I') -> 1
roman_to_int('MMXXI') -> 2021
roman_to_int('LDVLIV') -> 499
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Нужно написать код, который будет переводить римские символы в привычную нам десятичную систему (про символы можно почитать тут).
Пример:
roman_to_int('XXI') -> 21
roman_to_int('IV') -> 4
roman_to_int('I') -> 1
roman_to_int('MMXXI') -> 2021
roman_to_int('LDVLIV') -> 499
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
⚡️ Легко создаём интерфейс командной строки
Для этого воспользуемся typer — модуль с открытым исходным кодом, позволяющий взаимодействовать с приложением из командной строки. В отличие от fire, он интуитивно понятнее и имеет больший функционал.
Установка:
Первый, если у вас всего один метод для работы, то вы можете воспользоваться typer.run, чтобы принять один аргумент — функцию.
Если же команд больше, то создайте класс Typer (на примере выше — app), и воспользуйтесь декоратором command.
После настройки всех функций, просто запустите приложение app().
#миниурок #typer
Для этого воспользуемся typer — модуль с открытым исходным кодом, позволяющий взаимодействовать с приложением из командной строки. В отличие от fire, он интуитивно понятнее и имеет больший функционал.
Установка:
pip install typer
Здесь есть два варианта развития события:Первый, если у вас всего один метод для работы, то вы можете воспользоваться typer.run, чтобы принять один аргумент — функцию.
Если же команд больше, то создайте класс Typer (на примере выше — app), и воспользуйтесь декоратором command.
После настройки всех функций, просто запустите приложение app().
#миниурок #typer
Что выведет код выше?
Anonymous Quiz
20%
34125
15%
34521
21%
['3', '4', '1', '2', '5']
25%
Ошибку
19%
Узнать ответ
⚡️ Что такое ссылочные типы?
Каждый раз, когда создаётся класс, данные записываются в память, а вы получаете ссылку на объект. Поскольку класс возвращает ссылку, он является ссылочным типом.
С помощью ссылок вы можете взаимодействовать с объектом. Например, считывать данные или редактировать их.
Также, ссылки передаются функциям, поэтому все изменения внутри функции повлияют на передаваемый класс, из-за чего часто появляются непредвиденные баги.
Кстати, dict, list, set это всё ссылочные типы. Будьте осторожны, если собираетесь создавать методы для работы с ними.
А вот если вам нужна посмотреть тот самый адрес объекта в памяти, вы можете воспользоваться id.
#теория
Каждый раз, когда создаётся класс, данные записываются в память, а вы получаете ссылку на объект. Поскольку класс возвращает ссылку, он является ссылочным типом.
С помощью ссылок вы можете взаимодействовать с объектом. Например, считывать данные или редактировать их.
Также, ссылки передаются функциям, поэтому все изменения внутри функции повлияют на передаваемый класс, из-за чего часто появляются непредвиденные баги.
Кстати, dict, list, set это всё ссылочные типы. Будьте осторожны, если собираетесь создавать методы для работы с ними.
А вот если вам нужна посмотреть тот самый адрес объекта в памяти, вы можете воспользоваться id.
#теория
⚡️ Задачка с собеседования | #Easy
Условие:
Вы — разработчик игры и у вас есть три уровня. За их прохождение даётся различное кол-во очков, оно указано в mult_round.
Вам необходимо написать функцию, которая будет считать трёх игроков с максимальным счётом.
На вход идёт словарь типа Имя игрока: результаты раунда (массив). Массив может быть разным из-за ошибки вычисления или если игрок вышел во время раунда (пустой массив или меньше трёх элементов).
Подсчёт идёт за счёт перемножения количества убитых врагов и количества очков за раунд.
Пример — на изображении выше.
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования
Условие:
Вы — разработчик игры и у вас есть три уровня. За их прохождение даётся различное кол-во очков, оно указано в mult_round.
Вам необходимо написать функцию, которая будет считать трёх игроков с максимальным счётом.
На вход идёт словарь типа Имя игрока: результаты раунда (массив). Массив может быть разным из-за ошибки вычисления или если игрок вышел во время раунда (пустой массив или меньше трёх элементов).
Подсчёт идёт за счёт перемножения количества убитых врагов и количества очков за раунд.
Пример — на изображении выше.
📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇
#Задачка_с_собеседования