Senior Python Developer
43.7K subscribers
2.09K photos
4 videos
1 file
526 links
№ 4931117861
Публикуем интересные/полезные фичи/библиотеки языка.

По вопросам сотрудничества: @adv_and_pr

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Cравнение 2 аудиосообщений

Для сравнения двух аудиосообщений в Python нужно использовать библиотеку для анализа звука, например, librosa или PyAudio.

Здесь мы загружаем два файла и вычисляем их характеристики MFCC (Mel Frequency Cepstral Coefficients), которые представляют собой набор коэффициентов, описывающих звуковое пространство. Затем мы вычисляем расстояние между характеристиками с помощью функции dtln из librosa.core. Результат будет выведен в консоль.

Обратите внимание, что для сравнения аудиосообщений нужно, чтобы они имели одинаковую продолжительность и были записаны в одинаковых условиях (например, громкость, обработка шума).
Соединение списка и множества в словарь

Для соединения списка и множества в словарь можно использовать встроенную функцию zip(). Эта функция объединяет элементы нескольких последовательностей (`списков`, множеств, кортежей и т.д.) в кортежи.

Для создания словаря из списков и множеств нужно сначала объединить элементы в кортежи при помощи функции zip(), а затем создать словарь из этих кортежей при помощи функции dict().

fruit_prices будет содержать словарь {'apple': 1.20, 'banana': 0.80, 'orange': 1.50}.
Класс Process

Process — это класс для создания и управления отдельными процессами из модуля multiprocessing.
Создание процесса выполняется конструктором Process, передавая целевую функцию и аргументы.

При создании процессов нужно учитывать:
— Ограничения на доступ к данным между процессами.
— Синхронизацию процессов при необходимости.

#это_база
Работа с регистрами

Строки в Python имеют свойство регистра — прописные и строчные буквы считаются разными символами.

Для преобразования регистра используются методы строк:
str.upper() — преобразует строку к верхнему регистру.
str.lower() — преобразует строку к нижнему регистру.
str.swapcase() — меняет регистр каждого символа на противоположный.
str.capitalize() — делает первую букву заглавной, остальные строчными.

Регистр конкретного символа можно проверить в строке методами:
str.isupper() — проверка на заглавный регистр.
str.islower() — проверка на строчный регистр.

Регистр важно учитывать при сравнении строк на равенство.

#это_база
Dictionary Comprehension

Dictionary comprehension — это конструкция, позволяющая компактным способом создавать словари на основе существующих итерируемых объектов.

Dictionary comprehension применяется в ситуациях, когда нужно:
— Быстро создать словарь из списка или другого итерируемого объекта.
— Преобразовать одну структуру данных в словарь.
— Создать словарь с некоторой обработкой элементов.

Основные преимущества dictionary comprehension:
— Компактный и читаемый синтаксис по сравнению с циклами.
— Лаконичное создание словарей "на лету".
— Оптимизированная производительность по сравнению с циклами.
#вопросы_с_собеседований
Что такое Middleware?

Middleware — это промежуточное программное обеспечение, которое располагается между приложением и сетевыми службами.

Основная цель middleware — обработка запросов и ответов между клиентом и сервером.

Middleware выполняет такие функции, как:
— Аутентификация и авторизация пользователей
— Маршрутизация запросов к соответствующим сервисам или микросервисам
— Логирование и мониторинг
— Кэширование ответов для повышения производительности
— Балансировка нагрузки между серверами
— Шифрование и дешифрование данных
— Проверка и валидация данных
— Форматирование ответов в нужный формат
— Обработка ошибок и исключений

Использование middleware позволяет разделить логику приложения и инфраструктуры, упростить масштабирование и модификацию отдельных компонентов.
#вопросы_с_собеседований
Какая разница в быстродействии между django и Flask и почему?

Django
чуть медленнее Flask из-за своей более высокой функциональности и накладных расходов. Однако на практике разница в скорости работы между ними незначительна для большинства веб-приложений.

Flask может быть немного быстрее при обработке простых запросов, но Django лучше масштабируется при увеличении нагрузки благодаря встроенным инструментам кэширования и оптимизации.
Кроме того, производительность в большей степени зависит от архитектуры и качества кода конкретного приложения.
Что такое Протоколы

Протоколы — это соглашения, которые определяют интерфейс класса и поведение его объектов.

Протоколы задаются с помощью специальных методов, таких как str, len и другие.
Они позволяют классам работать с различными функциями и операторами языка.

Реализуя протоколы можно интегрировать классы в языке и делать их поведение естественным и интуитивным.

В Python есть протоколы для чисел, итераторов, контекстных менеджеров, атрибутов и других областей.
Встроенные и сторонние библиотеки полагаются на стандартные протоколы.

#это_база
pprint()

Функция pprint() предназначена для красивого форматированного вывода данных.

pprint() форматирует произвольные структуры данных, такие как вложенные списки, словари, кортежи для удобочитаемого вывода.
По умолчанию выводит данные с отступами и переносами, чтобы структура была наглядной.

Может принимать ширину вывода в количестве символов для лучшего форматирования.
Имеет параметры depth и compact для настройки уровня вложенности и режима компактного вывода.

Функционал pprint() доступен через модуль pprint в стандартной библиотеке.

#это_база
Библиотека psychopy

PsychoPy — это библиотека для создания экспериментов в области психологии и нейронауки.
Библиотека позволяет создавать различные стимулы — текст, изображения, звуки, видео.

— Есть функции для отслеживания реакции испытуемых — регистрации нажатий клавиш, движения мыши, электроэнцефалограммы.
— Поддерживает создание протоколов экспериментов с использованием последовательностей стимулов и логики.
— Можно создавать окна для отображения стимулов разных типов.
— Позволяет экспортировать данные в разные форматы для последующей обработки.
Библиотека astropy

astropy — это библиотека для астрономии и астрофизики на Python.
Она содержит функционал для работы с астрономическими данными в разных форматах, включая FITS, ASCII и VOTable.

— Предоставляет классы и утилиты для представления и преобразования координат, дат, времени.
— Содержит поддержку физических величин с общим интерфейсом для работы с единицами измерения.
— Встроены статистические и математические функции, полезные для астрономии.
— Имеются утилиты для чтения данных из астрономических каталогов и баз.

аstropy легко расширяема — можно добавлять собственные пакеты для специфичных задач.
Функция dir()

Функция dir() используется для получения списка атрибутов и методов объекта.
Она принимает объект в качестве аргумента и возвращает список его атрибутов и методов в виде строк.

Для модулей dir() возвращает список определенных в нем имен. Для классов возвращаются его атрибуты, методы и внутренние функции.

С помощью dir() можно получить список ключевых слов языка, передав builtin или builtins в качестве аргумента.
Без аргументов dir() возвращает список имен, определенных в текущей области видимости.

#это_база
super()

super() — это встроенная функция, которая используется для вызова родительского класса. Она позволяет вызывать методы родительского класса из дочернего класса.
Это полезно при наследовании, чтобы использовать функционал базового класса.

Вызов super() ищет следующий класс в цепочке наследования и вызывает этот метод.
Функция принимает аргументы self и cls для связывания с текущим объектом и классом.

Она часто используется в методах init дочерних классов, чтобы вызвать init родителя и инициализировать его.
Использование super() позволяет избежать неявного упоминания имени базового класса в коде.

#это_база
#вопросы_с_собеседований
Что такое await?

Await используется для работы с асинхронным кодом и корутинами.

Его можно применять только внутри асинхронной функции, определенной с async def. Await позволяет избежать блокировки основного потока программы во время ожидания результатов asynс-функций.

Await делает возможным использование асинхронного кода в синхронном стиле последовательно. При вызове await передается управление обратно событийному циклу.
Выполнение функции приостанавливается до завершения await-выражения.

Чаще всего await используется при вызове асинхронных функций и методов — для ожидания результата.
Await также может применяться к объектам asyncio.Future и asyncio.Task для ожидания их завершения.

Если await вызывается для корутины, то выполнение текущей корутины приостанавливается до завершения той, которая вызвана.
#вопросы_с_собеседований
Что такое async?

Async — это синтаксис для создания асинхронного кода на основе корутин.
Асинхронное программирование позволяет выполнять операции вне основного потока выполнения программы.

С помощью async def определяются асинхронные функции-корутины. Такие функции не выполняются сразу, а возвращают объект-корутину.
Для запуска корутин используется await. Это передает управление обратно в событийный цикл до завершения корутины.

Asyncio — стандартный модуль для работы с асинхронным кодом. Он содержит событийный цикл и различные классы.

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

*Корутины полезны для операций ввода/вывода, ожидания сети, обращения к БД — там, где нужно не блокировать основной поток.
#вопросы_с_собеседований
Что такое интроспекция (intorspection)?

Интроспекция — это способность языка программирования получать информацию о своих объектах и данных во время выполнения программы.

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

Некоторые примеры использования интроспекции в Python:
— Проверка типа объекта с помощью функций type() или isinstance()
— Получение списка атрибутов и методов объекта с помощью dir()
— Использование hasattr() или getattr() для проверки наличия атрибута или метода у объекта
— Использование callable() для проверки, является ли объект функцией
Pystan

Pystan — это python-обёртка для Stan, которая позволяет использовать методы байесовского статистического вывода.

Основные возможности Pystan:
— Простой интерфейс для задания байесовских моделей на языке Stan.
— Автоматическая компиляция моделей в высокооптимизированный код на C++.
— Выполнение статистического вывода с использованием методов Монте-Карло (MCMC).
— Возможность задавать сложные иерархические модели.
— Удобные инструменты для анализа результатов моделирования.
— Интеграция со многими библиотеками данных и визуализации в Python.

Pystan используется везде, где нужно решать задачи статистического моделирования и анализа данных с помощью байесовских методов.
Библиотека cvxpy

cvxpy — эта библиотека позволяет описывать оптимизационные задачи в высокоуровневом виде и эффективно решать их с помощью численных методов.

Основные возможности cvxpy:
— Удобный синтаксис для задания целевой функции и ограничений в виде выражений Python.
— Поддержка разных типов переменных: вещественных, целочисленных, булевых.
— Возможность задания неравенств и равенств как ограничений.
— Встроенные функции для задания норм, статистических величин и других полезных выражений.
— Автоматический выбор подходящего численного решателя на основе задачи.
— Интеграция с NumPy, SciPy и другими популярными библиотеками.

cvxyp часто используется для решения задач оптимизации в машинном обучении, обработке сигналов, финансовом моделировании и других областях.
#вопросы_с_собеседований
Для чего нужен модуль operator?

Модуль operator предоставляет функции, которые соответствуют встроенным операторам языка.
Например, функции add(), sub(), mul() и другие реализуют арифметические операторы +, -, *.

Основные причины использования модуля operator:

— Возможность передавать функции в качестве аргументов или возвращаемых значений других функций. Например, в sorted(), min(), max() и др.

— Оптимизация производительности за счет использования функций вместо выражений. Функции заранее компилируются.

— Удобство использования при работе с изменяемыми операторами. Можно легко передать нужный оператор в функцию.

— Дополнительные возможности, например, operator.itemgetter() и operator.attrgetter() для извлечения элементов из объектов.
#вопросы_с_собеседований
Что такое каррирование?

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

Это позволяет зафиксировать некоторые аргументы функции и создать новую функцию с меньшим количеством аргументов.

Каррирование часто используется в функциональном программировании для создания более гибких и переиспользуемых функций.
Оно помогает избежать дублирования кода и упростить работу с функциями высшего порядка.
Библиотека qiskit

Qiskit — это библиотека для работы с квантовыми вычислениями и квантовым программированием на Python.
Она позволяет реализовывать и тестировать квантовые алгоритмы на компьютере.

Основные возможности Qiskit:
— Создание и симуляция квантовых цепей.
— Работа с квантовыми алгоритмами (Гровера, Шора, квантовое Фурье-преобразование и др.).
— Оптимизация и компиляция квантовых программ.
— Интеграция с реальным квантовым оборудованием (квантовыми процессорами).
— Визуализация и анализ квантовых цепей.