Python академия
7.7K subscribers
2.37K photos
5 videos
269 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Как работают статические методы

Статические методы создаются в классе при помощи декоратора @staticmethod. Такие методы привязаны к классу, а не объекту — в этом и есть основное отличие.

Такой тип методов не может модифицировать ни объект, ни сам класс. То есть передавать объект или класс и прописывать self или cls в аргументах не нужно.

Обычную функцию стоит вносить в класс в качестве статического метода в том случае, когда эта функция логически относится к классу и имеет смысл там быть.

Подписывайтесь на канал 👉@pythonofff
Хэширование

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

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

Но изменяемые объекты по типу списков и словарей нельзя хэшировать — интерпретатор выбросит соответствующую ошибку.

Здесь, кстати, есть две пасхалки. Хэш бесконечности равен перым цифрам числа Пи, а хэш Not a Number равен нулю.

А еще случаются коллизии: например, хэши чисел -1 и -2 одинаковы.

Подписывайтесь на канал 👉@pythonofff
Генераторы

Простой способ создания итератора.
Самый простой способ создания собственных итераторов в Python — это создание генератора.

В Python есть два способа создания генераторов.

Подписывайтесь на канал 👉@pythonofff
👍1
Объектно-ориентированный итератор могут экономить панять

Процессорное время и открывать для нас новые возможности.

Давайте создадим свои собственные итераторы. Для начала мы «изобретем» заново объект итератора itertools.count.

Подписывайтесь на канал 👉@pythonofff
Выделение базовой части слов

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

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

В модуле Python NLTK (Natural Language Toolkit Package) есть различные пакет, связанные с данным процессом выделения базовой части и использующие разные алгоритмы.

Один за пакетов, snowball, использует алгоритм соответственно Snowball, разработанный Мартином Портером. Алгоритм поддерживает большинство популярных языков.

Подписывайтесь на канал 👉@pythonofff
👍21
Многострочные комментарии

Некоторые языки программирования, к примеру С++, предоставляют возможность создания многострочных комментариев. Для создания многострочных комментариях вы спокойно можете использовать тройные кавычки.

Подписывайтесь на канал 👉@pythonofff
Please open Telegram to view this post
VIEW IN TELEGRAM
Отправляем запросы с HTTPX

Интересный пакет для работы с веб-запросам. Как говорят сами разработчики, это HTTP клиент следующего поколения.

Сравнивая с привычным requests, у httpx есть следующие преимущества:

— Стандартный синхронный интерфейс, но также есть поддержка асинхронности
— Поддержка HTTP/1.1 и HTTP/2
— Возможность отправлять запросы напрямую к WSGI и ASGI приложениям
— Полная поддержка аннотаций типов
— 100% покрытие тестами

Подписывайтесь на канал 👉@pythonofff
👍2
Именованные кортежи

Кстати, namedtuple из collections можно также использовать для хранения данных, как и классы данных, про которые я писал в предыдущем посте.

Из названия понятно, что в основе этой структуры лежит привычный всем кортеж. Если кто не помнит, то это как список, но неизменяемый.

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

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

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

Подписывайтесь на канал 👉@pythonofff
Please open Telegram to view this post
VIEW IN TELEGRAM
%matplotlib inline — это самая популярная магическая команда

Она позволяет отображать в блокнотах графики Matplotlib. Эта команда активирует интерактивную поддержку Matplotlib для блокнота Jupyter.

Подписывайтесь на канал 👉@pythonofff
👍1
Проверяем скорость интернета

Каждый хоть раз проверял скорость своего интернета на Speedtest. А у них, оказывается, есть не только сайт и приложения, но и пакет на Python для этого дела.

У объекта класса Speedtest методы download() и upload() выдают соответственно скорость скачивания и загрузки данных.

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

Подписывайтесь на канал 👉@pythonofff