Python tricks | Хитрости Питона
5.77K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Создаем графики в терминале

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

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

🔗 Python tricks
__missing__

Метод __missing__ определяет поведение подкласса словаря при доступе к несуществующему ключу. Более конкретно, внутренний метод словаря __getitem__ вызывает метод __missing__, если ключ не существует.

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

В этом примере мы создаем экземпляр класса DefaultDict с значением по умолчанию 'default'. Когда мы пытаемся получить доступ к несуществующему ключу 'key', вызывается метод __missing__, который возвращает значение по умолчанию.

🔗 Python tricks
doctest

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

Модуль doctest может быть полезен при написании документации для пакета или модуля, а также при написании тестов для проверки корректности работы кода.

В этом примере мы определяем функцию square, которая возвращает квадрат числа x. В докстринге функции мы включаем несколько интерактивных примеров использования функции. Затем мы импортируем модуль doctest и вызываем метод testmod, который автоматически находит и проверяет все doctest’ы в текущем модуле.

При запуске кода вы увидите подробный вывод о том, какие doctest’ы были выполнены и какие результаты они вернули.

🔗 Python tricks
Что такое синхронный код

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

🔗 Python tricks
Почему иногда Python так долго запускается в Windows

Запуск Python может занимать длительное время на компьютерах с операционной системой Windows по нескольким причинам. Вот некоторые из них:

Перезагрузка компьютера может занять длительное время и затормозить работу Python;

Некоторые антивирусные программы и брандмауэры могут занимать ресурсы и замедлять выполнение команд в Python;

Операционная система Windows может использовать много ресурсов, когда запускаются приложения, и это может сказаться на производительности Python;

Зависимости и модули Python, которые используются в приложении, могут занимать много времени на импорт и загрузку;

Неэффективный код Python может приводить к значительным задержкам и замедлениям;

Другие приложения, работающие на компьютере, могут занимать много времени на выполнение задач и затруднять работу Python;

🔗 Python tricks
Twisted

Twisted — это асинхронный фреймворк, написанный на Python. Это мощное средство для быстрой разработки сетевых (и не только) сервисов. Он разработан с использованием паттерна проектирования Reactor.

Фреймворк включает в себя следующие модули: twisted.web; twisted.conch; twisted.words; twisted.mail; twisted.positioning; twisted.names; twisted.trial.

В этом примере мы создаем класс Echo, который переопределяет метод dataReceived. Этот метод вызывается каждый раз, когда сервер получает данные от клиента.
Затем мы создаем класс EchoFactory, который переопределяет метод buildProtocol. Этот метод вызывается каждый раз, когда сервер принимает новое соединение.
Наконец, мы используем реактор Twisted для прослушивания входящих соединений на порту 1234 и запускаем реактор. Когда клиент подключается к серверу и отправляет данные, сервер отправляет эти данные обратно клиенту.

🔗 Python tricks
Pyro4

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

В этом примере мы используем Pyro4 для создания распределенного приложения, в котором объекты могут общаться друг с другом через сеть. Мы создаем удаленный объект GreetingMaker, который имеет метод get_fortune, который возвращает случайное приветствие. Затем запускаем сервер Pyro4, который предоставляет доступ к этому объекту через сеть.

🔗 Python tricks
Prophet

Prophet — это библиотека прогнозирования временных рядов с открытым исходным кодом, разработанная командой Facebook. Она доступна как для Python, так и для R.

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

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

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

🔗 Python tricks
Eve

Eve — это фреймворк для создания REST API на языке Python с открытым исходным кодом. Он позволяет легко создавать и развертывать высоко настраиваемые, полнофункциональные RESTful веб-сервисы. Eve предлагает встроенную поддержку для MongoDB и SQL-бэкендов через расширения сообщества.

В этом примере мы импортируем класс Eve из модуля eve, создаем экземпляр приложения Eve и запускаем его. Теперь API активен и готов к использованию.
В результате — запущенный веб-сервер с RESTful API, который можно использовать для обмена данными между клиентом и сервером.

*REST API — это API, построенный с учетом ограничений REST. Это означает, что REST API использует HTTP-методы (GET, POST, PUT, DELETE и т. д.) для выполнения операций над ресурсами (данными), представленными в виде URI (Uniform Resource Identifier).

🔗 Python tricks
Как работать с транзитивными зависимостями

Для работы с транзитивными зависимостями можно использовать систему управления зависимостями, например, pipenv, poetry или pip. Эти системы позволяют устанавливать зависимости и их транзитивные зависимости, а также контролировать версии зависимостей.

🔗 Python tricks
Annoy

Annoy (Approximate Nearest Neighbors Oh Yeah) — это библиотека, которая используется для поиска точек в пространстве, близких к заданной точке запроса. Она также создает большие файловые структуры данных только для чтения, которые отображаются в память, чтобы многие процессы могли использовать одни и те же данные.

В этом примере мы создаем индекс Annoy с длиной вектора элемента f и используем расстояние angular. Затем мы добавляем 1000 элементов со случайными значениями в индекс и строим его с использованием 10 деревьев. После этого мы сохраняем индекс в файл test.ann. Затем мы загружаем индекс из файла и выполняем поиск 1000 ближайших соседей для элемента с индексом 0.

Результат работы кода - список из 1000 индексов элементов, которые являются ближайшими соседями для элемента с индексом 0.

🔗 Python tricks
Auto-sklearn

Auto-sklearn — это автоматизированный инструмент машинного обучения и замена для оценщика scikit-learn. Он предназначен для автоматического обнаружения хорошо работающих моделей для задач прогнозного моделирования с минимальным участием пользователя.

В этом примере мы создаем экземпляр классификатора AutoSklearnClassifier и обучаем его на тренировочных данных X_train и y_train. Затем мы используем обученный классификатор для предсказания меток классов для тестовых данных X_test.

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

🔗 Python tricks
VisPy

VisPy — это высокопроизводительная интерактивная библиотека визуализации данных 2D/3D. VisPy использует вычислительную мощность современных графических процессоров через библиотеку OpenGL для отображения очень больших наборов данных.

VisPy способна создавать высококачественные интерактивные научные графики с миллионами точек.

В этом примере мы создаем данные для точечного графика с N точками и цветами. Затем мы создаем канвас и добавляем на него точечный график с помощью класса Markers. Наконец, мы запускаем приложение с помощью app.run().

Результат работы кода - отображение окна с интерактивным точечным графиком.

🔗 Python tricks
Объясните, что такое monkey patching и приведите пример

Monkey patching — это техника изменения поведения кода во время выполнения путем динамической замены или добавления методов или атрибутов в существующем объекте. Эта техника может быть полезна в том случае, когда изменения не могут быть внесены в существующий код, и требует минимальных изменений в существующем коде.

🔗 Python tricks
dict.items

Метод items() возвращает объект представления, который отображает список пар кортежей словаря (ключ, значение). Если список обновляется в любое время, изменения отражаются на самом объекте представления, как показано в приведенном выше примере.

🔗 Python tricks
Dask

Dask — это гибкая библиотека для параллельных вычислений. Dask состоит из двух частей: динамического планирования задач, оптимизированного для вычислений, и коллекций "больших данных", таких как параллельные массивы, фреймы данных и списки, которые расширяют общие интерфейсы, такие как NumPy, Pandas или итераторы Python, до сред больше памяти или распределенных сред.

В этом примере мы создаем массив Dask x размером 10000x10000 с чанками размером 1000x1000. Затем мы выполняем несколько операций над массивом x, включая транспонирование, срез и вычисление среднего значения. Наконец, мы вызываем метод compute() для вычисления результата.

Результат работы кода - массив NumPy со средними значениями по строкам для каждой второй строки в срезе y[::2, 5000:].

🔗 Python tricks
Catboost

CatBoost это быстрая, масштабируемая и высокопроизводительная библиотека градиентного бустинга на деревьях решений, используемая для ранжирования, классификации, регрессии и других задач машинного обучения для Python, R, Java, C++. Поддерживает вычисления на CPU и GPU.

В этом примере мы импортируем CatBoostClassifier из catboost и создаем экземпляр классификатора с определенными параметрами. Затем мы обучаем модель на тренировочных данных и метках с помощью метода fit. После обучения мы можем использовать методы predict и predict_proba для получения предсказаний классов и вероятностей соответственно.

Результат работы кода будет зависеть от входных данных. В этом примере используются случайные данные для обучения и тестирования. В реальных ситуациях данные будут отличаться.

🔗 Python tricks
LIME

LIME (Local Interpretable Model-agnostic Explanations) - это проект, который объясняет, что делают модели машинного обучения. lime поддерживает объяснения для табличных моделей, текстовых классификаторов и классификаторов изображений.

В этом примере мы загружаем данные о качестве вина и разделяем их на тренировочные и тестовые. Затем мы обучаем модель RandomForestClassifier на тренировочных данных. Далее мы создаем объект LimeTabularExplainer из библиотеки lime, который используется для интерпретации предсказаний модели. Мы выбираем индекс объекта из тестовых данных и используем метод explain_instance для получения объяснения предсказания модели для этого объекта.

🔗 Python tricks
H2Oai

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

H2O JVM предоставляет веб-сервер, чтобы все общение происходило через сокет (указанный IP-адресом и портом) с помощью серии вызовов REST.

В этом примере мы импортируем H2OGradientBoostingEstimator из библиотеки h2o и инициализируем H2O с помощью init. Затем загружаем данные и разделяем их на тренировочные и тестовые. Далее мы определяем признаки и целевую переменную для обучения модели.

Затем мы создаем экземпляр H2OGradientBoostingEstimator и обучаем его на тренировочных данных с помощью метода train. После обучения мы можем использовать метод model_performance для оценки качества модели на тестовых данных.

🔗 Python tricks