Разделители для целых чисел
Трудно визуально различить целые числа подобные
Но Python позволяет использовать нижнее подчеркивание как разделитель для улучшения читабельности.
Например,
#числа
Трудно визуально различить целые числа подобные
10000000
и 100000000
. Использовать запятые, как в английском языке, не получится.Но Python позволяет использовать нижнее подчеркивание как разделитель для улучшения читабельности.
Например,
1_000_000
будет интерпретироваться как целое число 1000000
.#числа
👍5❤4
spotDL: Автоматизация загрузки музыки из Spotify
Библиотека spotDL - это мощный инструмент для автоматизации процесса загрузки музыки из Spotify. Если вы ищете способ легко и быстро получить аудиотреки с этой популярной стриминговой платформы, то spotDL может стать вашим идеальным партнером.
Установка spotDL также проста и выполняется через
spotDL позволяет выполнять поиск треков, альбомов или плейлистов по запросам и загружать их на ваше устройство. Он также предоставляет возможность выбора желаемого качества аудио и множество других опций для настройки загрузки.
Библиотека spotDL не только удобна для скачивания музыки для личного пользования, но также может быть использована для создания аудиоархивов, подкастов или даже для автоматизации процесса создания музыкальных бэкапов.
#spotify #spotDL #аудио #автоматизация
Библиотека spotDL - это мощный инструмент для автоматизации процесса загрузки музыки из Spotify. Если вы ищете способ легко и быстро получить аудиотреки с этой популярной стриминговой платформы, то spotDL может стать вашим идеальным партнером.
Установка spotDL также проста и выполняется через
pip
. Эта библиотека предоставляет удобные средства для поиска и загрузки музыки из Spotify. Она работает асинхронно и поддерживает асинхронный синтаксис с помощью async/await
, что делает ее отличным инструментом для современных приложений, где требуется автоматизированный доступ к аудиоконтенту.spotDL позволяет выполнять поиск треков, альбомов или плейлистов по запросам и загружать их на ваше устройство. Он также предоставляет возможность выбора желаемого качества аудио и множество других опций для настройки загрузки.
Библиотека spotDL не только удобна для скачивания музыки для личного пользования, но также может быть использована для создания аудиоархивов, подкастов или даже для автоматизации процесса создания музыкальных бэкапов.
#spotify #spotDL #аудио #автоматизация
👍6
Очистка элементов в последовательности
Встроенный модуль
Иногда возникает необходимость в удалении ненужных объектов последовательности. Как раз для этого и используют
Первым аргументом передается какой-либо контейнер, например список. Вторым аргументом — логические значения, соответствующие элементам в последовательности.
Если логическое значения равно
#itertools
Встроенный модуль
itertools
был создан для работы с более сложными случаями итераторов. Плюс модуля в том, что он быстро работает и оптимизирован в плане памяти. Иногда возникает необходимость в удалении ненужных объектов последовательности. Как раз для этого и используют
itertools
, а именно метод compress
.Первым аргументом передается какой-либо контейнер, например список. Вторым аргументом — логические значения, соответствующие элементам в последовательности.
Если логическое значения равно
True
или 1
, то элемент сохраняется в последовательности, в противном случае — удаляется из нее. #itertools
🔥8👍3
Мощная декларативная библиотека для работы с датой и временем
Большинство разработчиков знают про модуль datetime из стандартной библиотеки - достаточно хороший инструмент для работы с временем. Но не лишним будет узнать про его мощное расширение - dateutil.
dateutil позволяет писать краткий и декларативный код для решения задач по взаимодействию с датой и временем.
На скриншоте показано получение первого дня прошлого месяца с помощью dateutil и без.
Примечательно то, что dateutil позиционируется как расширение для datetime, что значит, что они друг с другом совместимы.
Большинство разработчиков знают про модуль datetime из стандартной библиотеки - достаточно хороший инструмент для работы с временем. Но не лишним будет узнать про его мощное расширение - dateutil.
dateutil позволяет писать краткий и декларативный код для решения задач по взаимодействию с датой и временем.
На скриншоте показано получение первого дня прошлого месяца с помощью dateutil и без.
Примечательно то, что dateutil позиционируется как расширение для datetime, что значит, что они друг с другом совместимы.
🔥3
Форматируемые шаблоны строк
Модуль
Такой способ появился ещё в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.
В новых проектах, конечно, используются чаще всего f-строки и иногда метод
#строки
Модуль
string
из стандартной библиотеки содержит интересный класс Template
, который позволяет вполне удобно создавать шаблоны строк для дальнейшего форматирования.Такой способ появился ещё в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.
В новых проектах, конечно, используются чаще всего f-строки и иногда метод
format
, но всё же о Template
стоит хотя бы знать на случай, если придется работать с легаси кодом.#строки
🔥1
Слабые ссылки
Weakref позволяет создавать слабые ссылки к объектам, но не поддерживают объект живым, если не осталось больше сильных ссылок.
Слабые ссылки нужны для организации кэшей и хеш-таблиц из тяжелых объектов, потому что в долгоживущих программах может закончится память из-за большого хранения в кэшах.
#weakref
Weakref позволяет создавать слабые ссылки к объектам, но не поддерживают объект живым, если не осталось больше сильных ссылок.
Слабые ссылки нужны для организации кэшей и хеш-таблиц из тяжелых объектов, потому что в долгоживущих программах может закончится память из-за большого хранения в кэшах.
#weakref
🔥6❤2👍2
Пакетный менеджер pip
Для работы с пакетами в Python есть специальная утилита
Установить или удалить пакет можно через команды
Команды
А с помощью
#pip
Для работы с пакетами в Python есть специальная утилита
pip
— устанавливается она сразу вместе с интерпретатором.Установить или удалить пакет можно через команды
install
и uninstall
. После них нужно перечислить необходимые пакеты через пробел.Команды
list
и freeze
покажут все пакеты в текущем окружении, а также их версии. Обратите внимание на то, как выглядит вывод каждой из них.А с помощью
show
можно посмотреть информацию о конкретном пакете: название, версию, описание, автора, лицензию и другое.#pip
👍8👎1
Типизация в Python с использованием модуля typing
В
Зачем использовать типизацию?
1. Ясность и понятность кода: Добавление аннотаций типов помогает читателям быстро понять, какие данные ожидаются и какие типы переменных возвращаются из функций.
2. Предотвращение ошибок: Статические анализаторы кода, такие как
3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов.
Пример использования типизации для переменных и функций:
Здесь
Типизация делает ваш код более структурированным, улучшает его читабельность и может служить документацией, облегчая разработку.
#python #typing
В
Python
модуль typing
предоставляет возможность добавлять подсказки типов для переменных, функций и классов, что делает код более явным и понятным.Зачем использовать типизацию?
1. Ясность и понятность кода: Добавление аннотаций типов помогает читателям быстро понять, какие данные ожидаются и какие типы переменных возвращаются из функций.
2. Предотвращение ошибок: Статические анализаторы кода, такие как
mypy
, могут обнаруживать потенциальные ошибки до выполнения программы, что уменьшает количество багов.3. Документация кода: Подсказки типов могут служить формой документации, особенно полезной при совместной разработке. Разработчики могут быстро понимать интерфейсы функций и классов.
Пример использования типизации для переменных и функций:
from typing import List, Tuple
def multiply(a: int, b: int) -> int:
return a * b
def process_list(data: List[int]) -> Tuple[int, int]:
sum_values = sum(data)
average = sum_values / len(data)
return sum_values, average
# Пример использования
result1 = multiply(5, 3)# Ожидается int
data_list = [1, 2, 3, 4, 5]
result2 = process_list(data_list)# Ожидается Tuple[int, int]
Здесь
a: int
и b: int
указывают на типы аргументов функции, а -> int
и -> Tuple[int, int]
- на типы возвращаемых значений. Это помогает читателям кода лучше понимать ожидаемую структуру данных и типы переменных.Типизация делает ваш код более структурированным, улучшает его читабельность и может служить документацией, облегчая разработку.
#python #typing
👍2
VisPy
VisPy — это библиотека для визуализации данных в Python, предназначенная для создания высокопроизводительных интерактивных визуализаций. Она использует библиотеку OpenGL для рендеринга и обеспечивает доступ к графическим возможностям вашего компьютера через современный Python API.
После установки библиотеки, вы можете создать графические приложения с использованием VisPy. В примере на картинке создается окно с красным треугольником. VisPy предоставляет широкие возможности для создания 2D и 3D визуализаций, а также возможность работы с пользовательским вводом, анимациями и интерактивностью.
Вы можете найти дополнительные примеры и документацию на официальном сайте VisPy, чтобы более подробно изучить возможности этой библиотеки и начать создавать собственные визуализации.
#python
VisPy — это библиотека для визуализации данных в Python, предназначенная для создания высокопроизводительных интерактивных визуализаций. Она использует библиотеку OpenGL для рендеринга и обеспечивает доступ к графическим возможностям вашего компьютера через современный Python API.
После установки библиотеки, вы можете создать графические приложения с использованием VisPy. В примере на картинке создается окно с красным треугольником. VisPy предоставляет широкие возможности для создания 2D и 3D визуализаций, а также возможность работы с пользовательским вводом, анимациями и интерактивностью.
Вы можете найти дополнительные примеры и документацию на официальном сайте VisPy, чтобы более подробно изучить возможности этой библиотеки и начать создавать собственные визуализации.
#python
❤5👍4
Получаем данные о системе
Кроссплатформенная библиотека psutil позволяет получать информацию о процессоре, памяти, диске, сети, датчиках и запущенных процессах в системе. Примеры базового использования показаны на картинке.
Если говорить про практические применение, psutil полезен в основном для мониторинга системы, ограничения ресурсов процессов и управления запущенными процессами.
Помимо привычных Windows, MacOS и Linux, библиотека также поддерживает системы FreeBSD, OpenBSD, NetBSD, Sun Solaris и AIX.
#psutil
Кроссплатформенная библиотека psutil позволяет получать информацию о процессоре, памяти, диске, сети, датчиках и запущенных процессах в системе. Примеры базового использования показаны на картинке.
Если говорить про практические применение, psutil полезен в основном для мониторинга системы, ограничения ресурсов процессов и управления запущенными процессами.
Помимо привычных Windows, MacOS и Linux, библиотека также поддерживает системы FreeBSD, OpenBSD, NetBSD, Sun Solaris и AIX.
#psutil
👍7❤1
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
В примере мы проверяем, есть ли значение у атрибута
То есть при вызове конструктора класса
#классы #паттерны
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
__new__
вызывается для создания экземпляра класса, перед вызовом __init__
. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).В примере мы проверяем, есть ли значение у атрибута
instance
. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.То есть при вызове конструктора класса
Singleton
, будет возвращаться один и тот же объект из памяти.#классы #паттерны
👍4❤2
Загрузка файлов асинхронно
Если у нас есть список
Однако, для задач, включающих загрузку большого количества маленьких файлов, параллелизация может заметно ускорить процесс.
Для параллелизации мы можем использовать
С помощью метода
Важно понимать, что так как загрузка файлов является IO-операцией, данный метод не ускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего.
#python #threading
Если у нас есть список
URL
картинок для загрузки, использование простого цикла for
позволит нам загрузить их последовательно, по одной за раз.Однако, для задач, включающих загрузку большого количества маленьких файлов, параллелизация может заметно ускорить процесс.
Для параллелизации мы можем использовать
ThreadPoolExecutor
из модуля concurrent.futures
. Этот инструмент позволяет выполнить функцию загрузки в нескольких параллельных потоках, где в конструкторе необходимо указать максимальное количество потоков для одновременного выполнения.С помощью метода
.map(download, urls)
можно развернуть функцию загрузки на каждый URL
из списка, обеспечивая их параллельную обработку.Важно понимать, что так как загрузка файлов является IO-операцией, данный метод не ускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего.
#python #threading
👍4❤2
Метод isspace()
Метод
Примечание:
#python
Метод
isspace()
— это строковый метод, который используется для проверки, состоит ли строка только из пробельных символов (пробелов, символов табуляции, символов новой строки и других символов, которые считаются «пробельными» в контексте языка Python).Примечание:
isspace()
не изменяет исходную строку, а просто возвращает булево значение в зависимости от условия.#python
👍5
Хорошую олимпиаду отличает прежде всего качество заданий и возможность получить как можно больше опыта.
Это как раз отличительные черты AIDAO — международной олимпиады для студентов, организованной Яндекс Образованием и ФКН НИУ ВШЭ.
— Задачи по ИИ и анализу данных
— Живое общение со студентами и экспертами
— Победителям — миллион рублей и преимущество при поступлении в магистратуры ФКН ВШЭ
— Масштабный финал в Москве
Чтобы принять участие в AIDAO нужно собрать команду из студентов и зарегистрироваться по ссылке
Это как раз отличительные черты AIDAO — международной олимпиады для студентов, организованной Яндекс Образованием и ФКН НИУ ВШЭ.
— Задачи по ИИ и анализу данных
— Живое общение со студентами и экспертами
— Победителям — миллион рублей и преимущество при поступлении в магистратуры ФКН ВШЭ
— Масштабный финал в Москве
Чтобы принять участие в AIDAO нужно собрать команду из студентов и зарегистрироваться по ссылке
🔥1
Ускоряем код с помощью векторизации
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.
Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией
По сути,
#vectorize #numpy
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.
Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией
my_func
мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize
.По сути,
vectorize
преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению.#vectorize #numpy
👍4❤1
Универсальный парсер статей
Пакет
Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Но точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница. Поэтому в некоторых случаях результат может отличаться от ожиданий.
#парсер #newspaper3k
Пакет
newspaper3k
позволяет парсить статьи и извлекать из них заголовки, текст, дату публикации, имена авторов и много другой информации.Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Но точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница. Поэтому в некоторых случаях результат может отличаться от ожиданий.
#парсер #newspaper3k
👍2
True Tech Champ 2025
Программируешь на Python, C++ или другом языке? Проверь себя на всероссийском чемпионате от МТС и поборись за часть призового фонда в 10 250 000 ₽.
Два трека:
Алгоритмический — классический олимпиадный формат, призовой фонд 2,75 млн ₽.
Программирование роботов — напиши код, чтобы робот прошёл лабиринт и реальные испытания на шоу-финале в Москве. Призовой фонд 7,5 млн ₽.
Трек будет интересен начинающим и опытным разработчикам: С++, Go, Python, JS, Java, C# и не только.
Регистрация открыта до 20 октября.
Подробности тут.
Программируешь на Python, C++ или другом языке? Проверь себя на всероссийском чемпионате от МТС и поборись за часть призового фонда в 10 250 000 ₽.
Два трека:
Алгоритмический — классический олимпиадный формат, призовой фонд 2,75 млн ₽.
Программирование роботов — напиши код, чтобы робот прошёл лабиринт и реальные испытания на шоу-финале в Москве. Призовой фонд 7,5 млн ₽.
Трек будет интересен начинающим и опытным разработчикам: С++, Go, Python, JS, Java, C# и не только.
Регистрация открыта до 20 октября.
Подробности тут.
👎1🔥1
Объединяем видео и аудио потоки
Итак, дополнение к предыдущему посту.
Из-за технологии потоковой передачи DASH (Dynamic Adaptive Streaming over HTTP), используемой youtube, мы не можем получить сразу видео в нужном качестве со звуковой дорожкой из-за ее отсутствия в потоке.
В качестве решения мы можем по отдельности забрать аудио и видео и объединить с помощью утилиты ffmpeg. Для этого выбираем нужные потоки
#youtube
Итак, дополнение к предыдущему посту.
Из-за технологии потоковой передачи DASH (Dynamic Adaptive Streaming over HTTP), используемой youtube, мы не можем получить сразу видео в нужном качестве со звуковой дорожкой из-за ее отсутствия в потоке.
В качестве решения мы можем по отдельности забрать аудио и видео и объединить с помощью утилиты ffmpeg. Для этого выбираем нужные потоки
video
и audio
, после чего передаем url
'ы в команду для инициирования создания процесса для скачивания и объединения потоков с помощью ffmpeg
.#youtube
🔥4
Применяем pathlib взамен os
В Python 3 стандартная библиотека включает модуль
Одно из наиболее впечатляющих преимуществ использования
В общем, этот модуль предлагает замену функциям для работы с файловыми путями из модуля
#path #os
В Python 3 стандартная библиотека включает модуль
pathlib
, предоставляющий функцию Path
, которая обеспечивает все необходимое для эффективной работы с путями к файлам.Одно из наиболее впечатляющих преимуществ использования
pathlib
- это упрощение работы с путями за счет использования Path
вместо os.path.join
, представляя более простой и изящный метод, как показано на изображении.В общем, этот модуль предлагает замену функциям для работы с файловыми путями из модуля
os
, таким как os.mkdir
или os.path
, на более удобные альтернативы.#path #os
👍2