TGINSIGHT CHAT
Python Academy
@python_academy
EducaciónPython Academy — один канал вместо тысячи учебников Чат канала: @python_academy_chat Сотрудничество: @zubar89 Канал включён в перечень РКН: https://rkn.link/TVu
Posts recientes
Pág. 6 de 85 · 1,014 posts
Символы Юникода Добавлять юникод-символы в строковые литералы можно не только с помощью их номеров, но и по их названиям. Более того, такая запись символов юникода совместима и с f-строками, а это очень удобно. #строки#юникод
Превью из длинного текста Допустим, у нас есть какой-то длинный текст в виде строки и надо сделать превью этого текста, например, для сайта. Первое, что приходит на ум – использовать слайсинг строк. Но, как видите, текст оборвался на полуслове, поэтому такой вариант отпадает. Такую проблему хорошо решает метод shorten из модуля textwrap. Первым аргументом передается строка, вторым указываем количество символов, которое должен содержать результат. Также третьим аргументом можно передать заготовку, которая будет вставляться в конце обрезанной строки. #строки#textwrap
Получение аудиопотока с микрофона Библиотека PyAudio предоставляет возможности для записи аудиопотока с различных устройств. PyAudio работает посредством кросс-платформенной библиотеки PortAudio (поэтому необходимо заранее установить пакет разработки portaudio19-dev). В приведенном примере мы создаем объект класса PyAudio и открываем поток с рядом констант для настройки аудиопотока, поступающего с микрофона (для выбора другого устройства нужно передать его номер в качестве аргумента input_device_index). Данный объект потока позволяет считывать с устройства с помощью метода stream.read(). Полученную информацию мы можем использовать для дальнейшего анализа и модификации. В примере же мы просто считываем 10 секунд, после чего записываем их в аудио-файл wav. #pyaudio#audio
Поверхностное копирование Копирование объектов может быть «поверхностное» (shallow) или «глубокое» (deep). Различия между ними заключаются в том, как обрабатываются вложенные объекты. При поверхностном копировании создается новый объект, но его внутренние элементы (если они тоже являются объектами) остаются ссылками на те же объекты, что и в оригинале. Другими словами, копируются только ссылки на объекты, но не сами объекты. #python
Hashtags
Дробные числа По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными. Можно использовать тип данных Decimal, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать Fraction, который представляет и хранит число в виде рациональной дроби. #числа#fraction
Тестирование на pytest pytest — ближе по духу к языку Python нежели unittest, которая накладывает определенные обязательства при разработке тестов. Например, создание классов-наследников от TestCase или выполнение определенной процедуры запуска тестов. Но при разработке на pytest ничего этого делать не нужно. Вы просто пишете функции, которые должны начинаться с "test_" и используете assert, встроенные в Python. Также он поддерживает запуск тестов на unittest и nose, то есть полная обратная совместимость с ними. #python#pytest#assert
Паттерн проектирования Singleton Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр. Метод __new__ вызывается для создания экземпляра класса, перед вызовом __init__. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса). В примере мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем. То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти. #классы#паттерны
Захват экрана Windows Существует несколько библиотек на Python для захвата экрана компьютера под управлением операционной системы Windows, но самой быстрой оказалась библиотека d3dshot. Она использует системные библиотеки DXGI и Direct3D, чтобы обеспечить чрезвычайно быструю и надежную функциональность захвата экрана. Её можно применить, например, в реализации игровых ботов. Пример можно посмотреть тут. #d3dshot
Hashtags
Цикл событий в Python Цикл событий — это ядро для каждого асинхронного приложения. Он нужен для того, что бы запускать асинхронные задачи и функции обратного вызова. Поговорим теперь о низкоуровневых методах: get_running_loop — Возвращает текущий цикл событий в потоке. Если его нет, то будет RuntimeError. Может быть вызвана только с корутины или функции обратного вызова. get_event_loop — Делает тоже самое что и функция выше, но если set_event_loop не был вызван, то в добавок ещё закрепит новый цикл. new_event_loop — Создает новый цикл событий. set_event_loop — Устанавливает цикл событий для текущего потока. Немного о методах для работы с циклами событий: run_forever — Запускает цикл событий до тех пока stop не будет вызван. stop — Останавливает цикл событий. Также есть методы is_closed и is_running для проверки состояния. Пример можете посмотреть на картинке выше. Много другого полезного вы можете прочитать в документации. #async
Hashtags
Рисуем графики Графическая библиотека plotly позволяет создавать интерактивные качественные графики в Python. В сегодняшнем примере применим эту библиотеку чтобы построить простой линейный график. Сначала нам нужен список с данными, которые мы хотим изобразить на графике. Это может быть, например, список или numpy массив: data = [1, 1.3, 2.1, 4, 3.5, 7] Далее метод fig = px.line(y=data) принимает наши данные и строит график в виде точек с координатами из массива и обьединяет их линиями. Метод fig.show() откроет графическое окно с изображенным графиком. Кроме этого plotly позволяет строить такие графики как: — Точечные графики; — Круговые диаграммы; — Гистограммы; — Тепловые карты; — Пузырьковые диаграммы; — И многие другие. Больше подробно об этой библиотеке и способы ее применения можно посмотреть тут. Интерактивный пример работы с plotly можно посмотреть тут. #plotly
Hashtags
Делаем простой интерфейс используя tkinter tkinter - это стандартная библиотека для создания графического пользовательского интерфейса (GUI) в Python. Она предоставляет простой и удобный способ создания оконных приложений с использованием виджетов, таких как кнопки, текстовые поля, списки и многое другое. Хотя tkinter может показаться менеемощным по сравнению с некоторыми другими библиотеками GUI для Python, такими как PyQt или wxPython, она остается популярным выбором для начинающихразработчиков и для создания простых и удобных в использовании GUI-приложений. #python#tkinter
Дизассемблирование При запуске программы на python, написанный код преобразуется в байт-код, который затем может быть запущен в интерпретаторе Python. Встроенный модуль dis позволяет дизассемблировать байт-код в удобное представление для просмотра его инструкций. Полный спсиок инструкций байт-кода с описанием можно посмотреть в доке модуля. На картинке показана работа этого модуля на примере функции, но такое можно повторить и с классами – в таком случае все его функции будут дизассемблированы. #модули#байткод