⚡️ Тесты в документации
Такой подход интересен тем, что позволяет другому программисту понять как работает функция в определённых ситуациях, а вам — протестировать её работу.
Реализуется подобная фича с помощью встроенного модуля doctest. Он ищет текста, которые выглядят как интерактивные сеансы Python (>>>, ... и подобные символы).
Вы можете запускать тесты так же, как в примере, а можно с помощью терминала:
#миниурок #doctest
Такой подход интересен тем, что позволяет другому программисту понять как работает функция в определённых ситуациях, а вам — протестировать её работу.
Реализуется подобная фича с помощью встроенного модуля doctest. Он ищет текста, которые выглядят как интерактивные сеансы Python (>>>, ... и подобные символы).
Вы можете запускать тесты так же, как в примере, а можно с помощью терминала:
python -m doctest -v example.py
.#миниурок #doctest
🔥7👍3
⚡️ Несколько вариантов одной функции
В Python у вас не может существовать несколько функций с одинаковыми именами, которые работают с разными типами данных. Но такое возможно сделать с помощью multipledispatch.
Установка:
В зависимости от переданных аргументов будет выбираться правильная функция.
#миниурок #multipledispatch
В Python у вас не может существовать несколько функций с одинаковыми именами, которые работают с разными типами данных. Но такое возможно сделать с помощью multipledispatch.
Установка:
pip install multipledispatch
Просто навешиваете @dispatch
на функцию, куда передаёте тип, с которыми работает именно эта функция.В зависимости от переданных аргументов будет выбираться правильная функция.
#миниурок #multipledispatch
👍5
⚡️ Парсим YouTube
С помощью pytube мы можем узнать имя видео, его автора,где он живёт, описание и множество другого. Модуль также работает с плейлистами.
Установка:
Подробнее весь функционал описан в документации. А исходный код можно найти на странице github.
#миниурок #pytube
С помощью pytube мы можем узнать имя видео, его автора,
Установка:
pip install pytube
Стоит отметить, что на обычном парсинге всё не заканчивается. Мы ещё можем загружать видео с ютуба на основе своих предпочтений (качество, расширение).Подробнее весь функционал описан в документации. А исходный код можно найти на странице github.
#миниурок #pytube
👍10
⚡️ Немного про регулярные выражения
Все мы знаем, что регулярные выражения пишутся только один раз. После их просто нереально разобрать и изменить.
Один разработчик нашёл способ как это исправить используя f-строки в Python. Вот его статья.
#миниурок #re
Все мы знаем, что регулярные выражения пишутся только один раз. После их просто нереально разобрать и изменить.
Один разработчик нашёл способ как это исправить используя f-строки в Python. Вот его статья.
#миниурок #re
👍3
⚡️ Создаём интерфейс командной строки
Если вы пишите консольное приложение, то обязаны позаботиться о том, чтобы пользователям было удобно им пользоваться. CLI вам поможет создать fire.
Установка:
Также он предоставляет доступ ко всем атрибутам, которые переданы в него. Об этом и не только подробнее в документации.
#миниурок #fire
Если вы пишите консольное приложение, то обязаны позаботиться о том, чтобы пользователям было удобно им пользоваться. CLI вам поможет создать fire.
Установка:
pip install fire
Модуль придерживается ООПшного стиля, что сильно упрощает интеграцию к себе в проект.Также он предоставляет доступ ко всем атрибутам, которые переданы в него. Об этом и не только подробнее в документации.
#миниурок #fire
👍1🔥1
⚡️ Context Manager
Помните про with? Там рассказывалось про его использование с классами, но ничто не мешает использовать его с функциями. Только нужна библиотека contextlib.
Чтобы функция могла работать с with, вы добавляете
Только ещё вам нужно yield, чтобы вернуть объект, с которым будет работать with и при этом только приостановить работу функции. Подробнее.
#миниурок #contextlib
Помните про with? Там рассказывалось про его использование с классами, но ничто не мешает использовать его с функциями. Только нужна библиотека contextlib.
Чтобы функция могла работать с with, вы добавляете
@contextmanager
или @asynccontextmanager
, в зависимости от того, нужно ли вам асинхронное выполнение.Только ещё вам нужно yield, чтобы вернуть объект, с которым будет работать with и при этом только приостановить работу функции. Подробнее.
#миниурок #contextlib
👍8
Multithreading vs Multiprocessing
Multithreading предполагает, что процессор может выполнять несколько потоков одновременно, где каждый поток запускает процесс. Хорошо справляется с IO нагрузкой.
Multiprocessing предполагает, что есть несколько процессоров, где каждый процессор может запускать один или несколько потоков. Хорошо справляется с большой нагрузкой на CPU.
#миниурок #multithreading #multiprocessing
Multithreading предполагает, что процессор может выполнять несколько потоков одновременно, где каждый поток запускает процесс. Хорошо справляется с IO нагрузкой.
Multiprocessing предполагает, что есть несколько процессоров, где каждый процессор может запускать один или несколько потоков. Хорошо справляется с большой нагрузкой на CPU.
#миниурок #multithreading #multiprocessing
👍7
⚡️ Что быстрее, [] или list?
Ответить на этот вопрос поможет timeit. Он используется для измерения скорости выполнения каких-либо задач.
Чем же плох time? Во-первых, с ним неудобно. Во-вторых, на результат влияет огромное количество факторов, начиная загруженностью процессора и заканчивая сборщиком мусора.
Кстати, подробнее ответ на вопрос из названия разбирается в этой статье.
#миниурок #timeit
Ответить на этот вопрос поможет timeit. Он используется для измерения скорости выполнения каких-либо задач.
Чем же плох time? Во-первых, с ним неудобно. Во-вторых, на результат влияет огромное количество факторов, начиная загруженностью процессора и заканчивая сборщиком мусора.
Кстати, подробнее ответ на вопрос из названия разбирается в этой статье.
#миниурок #timeit
🔥5👍1
⚡️ Готовим объект к отправке на луну на сервер
Первым делом Python объект надо перевести в строку. Например, в JSON формат. Сделать это лучше всего с помощью marshmallow.
Установка:
Кстати, так же за счёт схем можно переводить строку обратно в объект за счёт той же самой схемы, что мы ранее создали.
Но и не забываем про валидацию, с которой можно познакомиться в документации.
#миниурок #marshmallow
Первым делом Python объект надо перевести в строку. Например, в JSON формат. Сделать это лучше всего с помощью marshmallow.
Установка:
pip install marshmallow
Таким образом вам не нужно добавлять convert_to_json()
в каждый класс, а достаточно просто настроить схему (Schema
) с полями (fields
) от marshmallow.Кстати, так же за счёт схем можно переводить строку обратно в объект за счёт той же самой схемы, что мы ранее создали.
Но и не забываем про валидацию, с которой можно познакомиться в документации.
#миниурок #marshmallow
👍2
⚡️ Какие планы?
Выложить пост через 10 минут? Или, может, отправить напоминание начать работать через час? В любом случае это не проблема с shed.
Модуль позволяет определять события, которые должны произойти через определённое время. К тому же он может работать в многопоточном режиме.
Об этих всех фишках подробнее рассказывают в документации.
#миниурок #shed
Выложить пост через 10 минут? Или, может, отправить напоминание начать работать через час? В любом случае это не проблема с shed.
Модуль позволяет определять события, которые должны произойти через определённое время. К тому же он может работать в многопоточном режиме.
Об этих всех фишках подробнее рассказывают в документации.
#миниурок #shed
👍4
⚡️ Модуль collections
Это изменённые контейнеры (dict, list, set, tuple), которые могут сильно помочь при решении задач.
#миниурок #collections
Это изменённые контейнеры (dict, list, set, tuple), которые могут сильно помочь при решении задач.
Counter(iter)
— подсчитывает количество повторений объекта в iter. С помощью most_common(n)
можно получить n самых повторяющихся объектов.defaultdict(default_factory)
— создаёт и подставляет новый объект, созданный default_factory, если не переданного ключа не существует.namedtuple(typename, field_names)
— Создаёт тип кортежа с именованными полями.#миниурок #collections
👍1
⚡️ Работаем с путями
Зачем изобретать велосипед с os.path, если с Python3.4 существует pathlib? Этот модуль упрощает работу с путями и добавляет новые функции.
Например, мы можем писать пути, которые будут нормально работать на Windows и Linux. Об этом рассказывается тут.
А если вам пришлось редактировать старый код с os, то это не проблема, ведь все пути это PathLike объекты.
#миниурок #pathlib
Зачем изобретать велосипед с os.path, если с Python3.4 существует pathlib? Этот модуль упрощает работу с путями и добавляет новые функции.
Например, мы можем писать пути, которые будут нормально работать на Windows и Linux. Об этом рассказывается тут.
А если вам пришлось редактировать старый код с os, то это не проблема, ведь все пути это PathLike объекты.
#миниурок #pathlib
🔥3
⚡️ Асинхронное программирование
Давайте приготовим ужин. Закидываем пельмешки в кастрюлю, ждём 5 минут, а пока они готовятся, режем хлеб и делаем салатик.
В этом и суть асинхронного программирования. Пока приложение ждёт окончания какого-либо действия, оно может заниматься чем-то другим, более полезным.
Таким образом мы можем ускорить сетевое приложение (пока оно будет ждать ответа от сервера, оно может делать что-то другое), не прибегая к многопоточности.
#миниурок #async
Давайте приготовим ужин. Закидываем пельмешки в кастрюлю, ждём 5 минут, а пока они готовятся, режем хлеб и делаем салатик.
В этом и суть асинхронного программирования. Пока приложение ждёт окончания какого-либо действия, оно может заниматься чем-то другим, более полезным.
Таким образом мы можем ускорить сетевое приложение (пока оно будет ждать ответа от сервера, оно может делать что-то другое), не прибегая к многопоточности.
#миниурок #async
👍11
⚡️ Виртуальная среда
Сколько у вас проектов на пк? И у каждого свои зависимости. Не хотите перенести их в отдельную папку?
Виртуальная среда — это место, которое изолированно от системы. Создать —
Запуск —
Преимущества: проекты легче переносятся, чище файл
#миниурок
Сколько у вас проектов на пк? И у каждого свои зависимости. Не хотите перенести их в отдельную папку?
Виртуальная среда — это место, которое изолированно от системы. Создать —
python3 -m venv path/to/env
.Запуск —
source path/to/env/bin/activate
. После можете спокойно python, pip, easy_install. Все действия будут происходить внутри среды.Преимущества: проекты легче переносятся, чище файл
requirements.txt
и нет проблем с другими проектами, а также легче полностью избавится от проекта.#миниурок
👍7
⚡️ Тестируем код
Если бы люди были роботами, нам бы не приходилось проверять код и pytest был бы никому не нужен.
Но сейчас это самая популярная библиотека для автоматизации тестирования, поэтому её стоит знать.
Она довольно удобная, выводит подробный отчёт, быстро настраивается и даже поддерживает плагины.
Недостатки тоже есть, но они незаметны: доп. зависимость и требует чутка больше знаний, чем unittest.
#миниурок
Если бы люди были роботами, нам бы не приходилось проверять код и pytest был бы никому не нужен.
Но сейчас это самая популярная библиотека для автоматизации тестирования, поэтому её стоит знать.
Она довольно удобная, выводит подробный отчёт, быстро настраивается и даже поддерживает плагины.
Недостатки тоже есть, но они незаметны: доп. зависимость и требует чутка больше знаний, чем unittest.
#миниурок
👍11
⚡️ Парсим сайты
Нужно узнать заголовок последней новости? Отслеживать цену товара? Или автоматически находить решение на Stackoverflow? Вам поможет Beautiful soup.
Установка:
Функционал довольно большой и весь список можно найти в документации.
#миниурок #bs4
Нужно узнать заголовок последней новости? Отслеживать цену товара? Или автоматически находить решение на Stackoverflow? Вам поможет Beautiful soup.
Установка:
pip install beautifulsoup4
Модуль может парсить HTML и XML файлы и находить на них нужную информацию. Например, найти заголовок (тег h1) или все ссылки на сайте.Функционал довольно большой и весь список можно найти в документации.
#миниурок #bs4
👍13
⚡️ Красивые ошибки
Можно скрасить неприятные эмоции от ошибок, установив pretty_errors. Модуль редактирует вывод исключений.
Установка:
Теперь попробуйте поделить на нольи схлопнется вселенная и получите ошибку как на фото выше.
#миниурок #pretty_errors
Можно скрасить неприятные эмоции от ошибок, установив pretty_errors. Модуль редактирует вывод исключений.
Установка:
pip install pretty_errors
А потом ещё пишем python -m pretty_errors
, отвечаем на вопросы и пользуемся. Если не знаете, что отвечать, просто нажимайте Enter.Теперь попробуйте поделить на ноль
#миниурок #pretty_errors
👍5
⚡️ Работаем с Excel
О да, эти таблички. Автоматизировать работу с ними можно за счёт openpyxl.
Установка:
К тому же у него очень хорошая документация. Там же можно найти уроки, которые помогают начать работать с модулем.
#миниурок #excel
О да, эти таблички. Автоматизировать работу с ними можно за счёт openpyxl.
Установка:
pip3 install openpyxl
Этот модуль умеет всё то, что умеет Excel (форматирование, формулы, всё доступно), так ещё и нормально работает на Linux.К тому же у него очень хорошая документация. Там же можно найти уроки, которые помогают начать работать с модулем.
#миниурок #excel
👍8🔥1
⚡️ Модуль inspect
С ним вы окунётесь в глубины Python и познаете принципы его работы... Почти. На самом деле он просто вытаскивает данные из объекта или делает какие-то проверки.
#миниурок #inspect
С ним вы окунётесь в глубины Python и познаете принципы его работы... Почти. На самом деле он просто вытаскивает данные из объекта или делает какие-то проверки.
signature(obj)
— сигнатура, то, как у функции определены аргументы. Используйте, если не понимаете, почему float(x='1')
выдаёт ошибку в Python 3.9.inspect.getmro(class)
— если нужно узнать иерархию классов (или можно просто использовать __mro__
).inspect.getsource(obj)
— исходный код объекта, inspect.getmodule(obj))
— модуль, в котором находится объект.#миниурок #inspect
⚡️ Профилируем код
Не можете найти слабое место у вашего алгоритма (не можете, поскольку его нет 😎 )? Давайте тогда посмотрим на использование ресурсов с помощью scalene.
Установка:
#миниурок #scalene
Не можете найти слабое место у вашего алгоритма (
Установка:
pip install scalene
Вам не нужно ничего добавлять в код, просто пишете scalene file.py
и получаете вывод, как на фото выше. Преимущества и сравнение можно найти тут.#миниурок #scalene
🔥11