Блог разраба со стажем
33K subscribers
485 photos
24 videos
1.28K links
Тут будет о моих разработках и историях, в который я попадаю - ваш Евгений.

Сотрудничество: clck.ru/3RF3WL
Download Telegram
Вычисление выражений Python

Вы наверняка знакомы с eval, но знаете ли вы о literal_eval? Вряд ли. Для безопасного исполнения выражений, содержащих исключительно литералы, вы можете делать так, как показано на картинке выше.

Между прочим, данная фича находится в языке уже очень давно.

Блог разраба со стажем
29🤯10😁4🔥1
Картографическая визуализация с использованием Folium

Folium обеспечивает интеграцию данных на карты, позволяя создавать как фоновые картограммы, так и размещать на картах векторные, растровые и HTML элементы в виде маркеров.

Эта библиотека поддерживает пользовательские наборы тайлов от MapBox или Cloudmade.

В арсенале Folium имеются различные типы маркеров, от простых маркеров местоположения со стандартными листовками, содержащими всплывающие окна и HTML подсказки, до возможности встраивания изображений, видео, а также GeoJSON и TopoJSON объектов.

Блог разраба со стажем
27🤯14😁4🔥3
Проверка отношения классов

Для того, чтобы проверить отношения двух классов или экземпляров (является ли класс классом наследником), есть две простые встроенные функции isinstance(object, classinfo) и issubclass(class, classinfo).

instance - возвращает True, если объект является экземпляром класса либо экземпляром подкласса данного класса.
issubclass — проверяет является ли класс наследником другого класса.

Данные функции зачастую применяются в ООП.

Блог разраба со стажем
38🤯16😁5🔥3
Преобразование аудиофайлов с помощью Python

В Python существует множество способов для выполнения конвертации аудиофайлов из одного формата в другой. Одним из наиболее удобных инструментов для этого является модуль pydub. Этот модуль служит оболочкой для ffmpeg и предоставляет возможности по загрузке, редактированию и сохранению аудиофайлов в различных форматах, поддерживаемых ffmpeg.

Для начала работы с файлом, используем метод from_ с указанием необходимого формата из класса AudioSegment, или же обратимся к более универсальному методу from_file, предоставляя путь к файлу и его формат.

Когда файл загружен, для его конвертации и сохранения в желаемом формате применяем метод export объекта класса AudioSegment, созданного на предыдущем шаге.

Блог разраба со стажем
37🤯17😁3
Слияние аудио и видео потоков

Проблема с получением видео в высоком качестве со звуком с YouTube связана с использованием технологии DASH (Dynamic Adaptive Streaming over HTTP), которая не предусматривает наличие звуковой дорожки в потоке.

Решением является отдельное получение аудио и видео потоков и их последующее объединение с использованием программы ffmpeg.

Необходимо выбрать соответствующие аудио и видео потоки, затем использовать полученные URL в команде ffmpeg для запуска процесса загрузки и слияния потоков.

Блог разраба со стажем
50🤯31😁8🔥4
Многопоточность

В модуле threading новый поток выполнения может начинаться с нового threading.Thread и присвоения ему функции для выполнения.

Параметр target ссылается на функцию (или вызываемый объект), который будет работать. Нить не начнет выполнение до start, также не будет вызываться Thread объекта.

Когда my_thread завершается, вызов start выкинет исключение RuntimeError. Если вы хотите запустить Thread в фоновом режиме, то передавайте daemon=True или установите my_thread.daemon в True перед вызовом start().

Блог разраба со стажем
31🤯12🔥2😁1
Работа с YAML-Файлами в Python с Помощью Библиотеки PyYAML

PyYAML позволяет эффективно работать с файлами в формате YAML (YAML Ain't Markup Language), который широко используется для конфигураций, настроек и обмена данными в структурированной форме.

import yaml

data_to_write = {'name': 'John Doe', 'age': 30, 'city': 'Example City'}
with open('example.yaml', 'w') as file:
yaml.dump(data_to_write, file, default_flow_style=False)

with open('example.yaml', 'r') as file:
loaded_data = yaml.safe_load(file)
print(f"Загруженные данные: {loaded_data}")


Результат (файл example.yaml):
age: 30
city: Example City
name: John Doe

В этом примере мы используем PyYAML для записи словаря data_to_write в файл example.yaml и затем загружаем данные из этого файла обратно в переменную loaded_data.

Библиотека PyYAML предоставляет удобные средства для работы с данными в формате YAML в Python. Будь то сохранение конфигураций, обмен структурированными данными или другие сценарии, где YAML имеет преимущество, PyYAML обеспечивает легкость в использовании и читаемый код🐍

Блог разраба со стажем
26🔥14👍6
Создание и использование виртуальной среды

virtualenv — инструмент для создания изолированных сред Python. Программа создает папку, которая содержит все необходимые исполняемые файлы для использования пакетов, необходимых для проекта.

Создание новой виртуальной среды требуется только один раз для каждого проекта, для которого вы хотите изолировать зависимости:
python3 -m venv venv

Это создаст папку venv, содержащую оснастку сценариев и копию python самого двоичного файла. Название папки не имеет значения.

Чтобы активировать виртуальную среду, нужно запустить activate файл: source venv/bin/activate и далее мы можем свободно устанавливать любые зависимости, которые никак не скажутся на работе в будущих проектах.

Блог разраба со стажем
50🤯23😁5🔥3
Использование аннотаций типов в Python

Python, язык с динамической типизацией, позволяет работать с переменными различных типов. Иногда это может привести к ошибкам из-за неправильного использования типов .

Начиная с версии 3.6, Python поддерживает аннотации типов для переменных, атрибутов классов, аргументов функций и их возвращаемых значений, что помогает улучшить читаемость кода и предотвратить ошибки, связанные с типами данных.

Блог разраба со стажем
26🤯13😁4🔥2
Применяем pathlib взамен os

В Python 3 стандартная библиотека включает модуль pathlib, предоставляющий функцию Path, которая обеспечивает все необходимое для эффективной работы с путями к файлам.

Одно из наиболее впечатляющих преимуществ использования pathlib - это упрощение работы с путями за счет использования Path вместо os.path.join, представляя более простой и изящный метод, как показано на изображении.

В общем, этот модуль предлагает замену функциям для работы с файловыми путями из модуля os, таким как os.mkdir или os.path, на более удобные альтернативы.

Блог разраба со стажем
54🤯28😁5🔥4
Паттерн проектирования Singleton

Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр. 

Метод __new__ вызывается для создания экземпляра класса, перед вызовом init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).

В примере мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.

То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти.

Блог разраба со стажем
22🤯10😁3🔥2