Python академия
7.72K subscribers
2.33K photos
6 videos
269 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Хэширование

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

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

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

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

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍3🥰1
Очищаем строки

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

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

В примере видим, как символы переноса строки "n" и табуляции "t" заменяются на обычные пробелы, а символ "r" удаляется из строки полностью.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Предоставляет подробную информацию об объекте, который передается вместе с ним. Она похожа на функцию object?.

В следующем фрагменте я указал простую строку “a” вместе с %pinfo, чтобы получить подробную информацию о ней.

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

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

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍2
%matplotlib inline — это самая популярная магическая команда

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

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍4
Выполнение html-скрипта в ячейке

%% html позволяет нам писать html-код.
Теперь ячейка будет действовать как html-редактор с html-выводом ячейки.

Следующий код состоит из простой таблицы, созданной в формате html. Заметьте, что html-вывод отображает ожидаемую таблицу.

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

Не самый полезный, но весьма интересный пакет pyjokes выдает различные шутки и анекдоты на 6 языках. Но русский, к сожалению, в это число не входит.

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

Также можно указать категорию в аргументах — особенно классно заходят штуки про Чак Норриса с пометкой 'chuck'.

Подписывайтесь на канал 👉@pythonofff
😁2🎉1
Обмен переменными между блокнотами

Эта команда позволяет вам хранить любую переменную и использовать ее в различных блокнотах Jupyter.
Чтобы извлечь переменную, вам нужно ввести ту же команду с параметром ‘-r’.

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

В Python существует так называемый Method Resolution Order (MRO), или порядок разрешения методов в классе. Всё, что вам нужно знать – это порядок, в котором Python ищет нужный атрибут или метод.

Этот порядок можно получить при помощи атрибута __mro__. Он говорит о том, что если мы в примере выше попробуем обратиться к атрибуту value, Python будет искать сначала в классе A, далее в B, затем в C и в самом конце в object.

Отсюда становится понятно, что артибут первее будет найден именно в классе B и равен он будет значению 1.

Подписывайтесь на канал 👉@pythonofff
👍4
JMESpath – это язык запросов для JSON

Который позволяет получать необходимые данные из документа или словаря JSON. Библиотека доступна как для Python, так и для других ЯП, что расширяет ее возможности.

Подписывайтесь на канал 👉@pythonofff
👍1🥰1
Можно разбить строки в список

В этом случае разбиение происходит по символу пробела

Чтобы разделить по пустому месту, не нужно передавать в split никаких аргументов – используйте mystring.split().

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

Подписывайтесь на канал 👉@pythonofff
2👍1
Возврат нескольких значений

Здесь возвращается кортеж. С тем же эффектом можно было бы написать return (name, birthdate).

Это нормально для ограниченного количества возвращаемых значений. Но все, что превышает 3 значения, должно быть помещено в класс (data)

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

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

Подписывайтесь на канал 👉@pythonofff
👍3
Генерируем QR-код

Простой, но удобный и полезный пакет для создания QR-кодов. Для отрисовки картинок используется Pillow, так что убедитесь, что он у вас установлен.

Чтобы создать объект картинки с QR-кодом необходимо вызвать метод make() и передать данные в качестве аргумента. А для сохранения нужно применить метод save() к полученному объекту.

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