Python академия
7.72K subscribers
2.3K photos
5 videos
267 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
OrderedDict

Словарь — это НЕупорядоченная коллекция пар ключ-значение. Однако OrderedDict поддерживает упорядочивание ключей.

Это в некотором роде подкласс словаря dict.

Давайте создадим обычный словарь и сделаем его OrderedDict, чтобы показать, в чем заключается разница.

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

Для работы с zip файлами можно использовать встроенный модуль zipfile. Если кто не помнит, то zip файл — это архив, содержащий сжатые файлы.

Просмотреть содержимое архива можно с помощью функции printdir, а извлечь все файлы можно вызвав extractfile.

Также этот модуль позволяет создавать свои zip архивы, но мы решили не усложнять пример, поэтому просто прикладываем ссылку на документацию.

Подписывайтесь на канал 👉@pythonofff
👍4
Как создать namedtuple из словаря в Python

Вы заметили, как мы преобразовали словарь в именованный кортеж с помощью оператора **?

Все, что вам нужно сделать для этого — определить структуру namedtuple и передать словарь (**dict) этому именованному кортежу в качестве аргумента. Единственное требование заключается в том, что ключи словаря должны совпадать с именами полей namedtuple.

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

С помощью пакета six можно писать код, который запустится и на Python 2, и на Python 3. То есть код получается обратно совместимым.

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

Например, в пакете поддерживаются tkinter и urllib.

Подписывайтесь на канал 👉@pythonofff
👍3
Как заменить атрибут в именованном кортеже

Что делать, если значение одного атрибута необходимо изменить?

Вам нужно обновить его в данных. Для этого просто воспользуемся методом ._replace()

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

Для того, чтобы проверить отношения двух классов или экземпляров (является ли класс классом наследником), есть две простые встроенные функции isinstance(object, classinfo) и issubclass(class, classinfo).

instance - возвращает True, если объект является экземпляром класса либо экземпляром подкласса данного класса.
issubclass — проверяет является ли класс наследником другого класса.

Данные функции зачастую применяются в ООП.

Подписывайтесь на канал 👉@pythonofff
👍6
Что такое метод?

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

Иногда вы можете задаться вопросом, существует ли какой-то метод. В Python можно посмотреть весь список строковых методов, используя функцию dir() со строкой в качестве аргумента.

Подписывайтесь на канал 👉@pythonofff
👍7😐2
Делаем планировщик задач

К моему удивлению, далеко не все знают про пакет schedule, который позволяет планировать задачи и повторять их через промежуток времени.

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

Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.

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

Sample Project — это пакет-шаблон с файлом setup.py для ручной установки пакета. Файл снабжен аннотациями, касающимися настройки скрипта и среды сборки пакета в целом.

Основан Sample project на пакете setuptools. setup.py — это скрипт сборки для пакетов, созданных с помощью setuptools.

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

В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает RecursionError во время создания рекурсивных алгоритмов.

Но с помощью модуля sys можно посмотреть и даже изменить максимальную глубину рекурсии. Хотя делать это слегка опасно, так как каждый новый вызов занимает много памяти.

И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.

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

Объект counter предоставляется библиотекой collections. Давайте поподробнее разберем, что он собой представляет.

К примеру, у вас есть список каких-то случайных чисел. Что, если вы хотите узнать, сколько раз встречается каждое число?

Счетчик counter позволяет легко вычислить частоту. Он работает не только с числами, но и с любым итерируемыми объектами, такими как строки и списки.

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

У классов практически во всех языках есть конструкторы — это такие специальные методы, которые вызываются автоматически и инициализируют экземпляр класса.

В Python конструкторы в классах имеют название __init__(), и их почти всегда переопределяют. Делается это для того, чтобы назначить свойства объекту и выполнить предварительные действия.

Первым аргументом конструктор всегда принимает объект класса, который обозначается как self.

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

Словарь — это НЕупорядоченная коллекция пар ключ-значение. Однако OrderedDict поддерживает упорядочивание ключей.

Это в некотором роде подкласс словаря dict.

Давайте создадим обычный словарь и сделаем его OrderedDict, чтобы показать, в чем заключается разница.

Подписывайтесь на канал 👉@pythonofff
👍2
Хотите опыт и знания, которые помогут вам вырасти профессионально, и ускорить обработку данных в ваших рабочих проектах? 

Тогда пора на 4-й поток онлайн-программы Spark Advanced! 

20 марта NewProLab запускает программу для дата-инженеров, имеющих практический опыт работы с Apache Spark 2 и желающих изучить внутреннюю архитектуру проекта. За 8 занятий в зуме вы узнаете, что у Spark под капотом и сможете выполнить 4 лабы: 

• Разработаете Encoder JSON to Row
• Разработаете коннектор для DataFrame API с использованием Datasource API 
• Добавите поддержку Predicate Pushdown в коннектор
• Добавите поддержку Structured Streaming API в коннектор

Преподаватели NewProLab – эксперты-практики из ведущих компаний России и мира, обучат работать с инструментами и технологиями через решение типичных задач с реальными дата-сетами. Полученные в ходе обучения знания возможно сразу внедрять в рабочие проекты!

Бонус: Получите скидку 23% при покупке программы по промокоду birthday23.

Подробности по ссылке!
👍2
Отсутствующие ключи в словаре

При обращении по отсутствующему ключу в словаре мы получим исключение KeyError. Но мы можем переопределить это поведение.

Для этого создадим свой собственный класс словаря, унаследовавшись от dict. После чего нам просто необходимо переопределить метод __missing__, который вызывается в базовой реализации методом dict.__getitem__ при при адресации к отсутствующему ключу.

Мы можем, например, возвращать какое-то дефолтное значение, либо определить любую другую необходимую логику поведения.

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

ChainMap — это контейнерный тип данных, в котором хранится несколько словарей.

Если у вас несколько связанных или похожих словарей, зачастую их можно хранить вместе, в ChainMap.

Распечатать все элементы ChainMap можно при помощи .map

Подписывайтесь на канал 👉@pythonofff
👍7
Работаем с файловыми путями

В стандартной библиотеке есть максимально удобный пакет pathlib для простой работы с файловыми путями.

Для представления пути к файлу есть класс Path, с объектами которого уже можно производить операции. Например, методы exists() и is_dir() проверяют, существует ли файл и является ли он директорией.

Но самой классной фичей является замена os.path.join() на более удобный и элегантный вариант с использованием слэшей, как показано на картинке.

Итого, пакет pathlib может стать частичной заменой os в некоторых случаях при работе с файловыми путями.

Подписывайтесь на канал 👉@pythonofff
👍4
Сортировка с помощью OrderedDict

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

Сортировка элементов по ключу KEY (в порядке возрастания)

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

У строк есть метод split(), который разбивает их по указанному разделителю и возвращает список из отдельных строк.

В качестве аргументов можно передать два значения: сам разделитель (по умолчанию знак пробела) и максимальное количество разделений.

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

Подписывайтесь на канал 👉@pythonofff
👍62
Что происходит, когда вы удаляете и повторно вставляете ключи в OrderedDict

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

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