TGViewer
Channel Public Channel
Python академия

Python академия

@pythonofff

Учи Python быстро и легко.

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

✔ Подходит для прокачки навыков кодирования.

По всем вопросам @evgenycarter
Subscribers
7.13K
Photos
2.6K
Videos
4
Links
464

Showing posts older than #1981 · Back to latest

Older Posts 20 shown
Post #1979 983
Выводим вложенные словари и списки

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

Но в стандартной библиотеке есть модуль pprint, который поможет вывести подобное дело в красивом формате — достаточно в коде заменить print() на pprint.pprint().

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 3
Post #1978 962
Что происходит, когда у нас есть избыточные ключи в ChainMap?

Возможно, что 2 словаря содержат один и тот же ключ.

Обратите внимание, что red не повторяется, он печатается только один раз.

Подписывайтесь на канал 👉@pythonofff
  • 👍 2
  • ❤ 1
Post #1977 1.1K
Флаги явного преобразования

Флаг явного преобразования (Explicit Conversion Flag) используется для преобразования значения поля format перед его непосредственным форматированием.

Это поле можно использовать для переопределения поведения format для какого либо конкретного типа и форматирования значения. В настоящее время распространены два явных флага преобразования:

!r — преобразует значение в строку, используя функцию repr().
!s — преобразует значение в строку, используя функцию str().

В примере, в случае с флагом !r строка 'Hello' будет напечатана с кавычками в поле шириной не менее 20 символов, а в случае с флагом !s — без кавычек (в более удобном для чтения виде).

Подписывайтесь на канал 👉@pythonofff
  • 👎 1
Post #1976 1.01K
Что происходит, когда вы удаляете и повторно вставляете ключи в OrderedDict

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 1
  • 💩 1
Post #1975 1.1K
Разбиение строки на список

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 1
  • 👍 1
Post #1974 1K
Сортировка с помощью OrderedDict

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 2
  • ❤ 1
  • 💩 1
Post #1973 1.11K
Работаем с файловыми путями

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 5
  • ❤ 2
Post #1972 993
ChainMap

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 3
  • 🤔 1
Post #1971 1.05K
Отсутствующие ключи в словаре

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 5
Post #1970 991
OrderedDict

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 💩 3
  • ❤ 1
Post #1969 935
Конструктор класса

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 3
Post #1968 1.01K
Counter

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 1
Post #1967 1.06K
Получаем и задаем лимит рекурсии

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 🤡 1
Post #1966 1.06K
Sample Project

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

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 1
  • 👍 1
Post #1965 1.1K
Делаем планировщик задач

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 4
  • ❤ 3
Post #1964 1.01K
Что такое метод?

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

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

Подписывайтесь на канал 👉@pythonofff
  • ❤ 3
  • 👍 1
Post #1963 985
Проверка отношения классов

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 2
Post #1961 919
Как заменить атрибут в именованном кортеже

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 2
  • 💩 2
Post #1960 1.03K
Пишем обратно совместимый код

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

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 2
  • 🤡 2
Post #1959 985
Как создать namedtuple из словаря в Python

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

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

Подписывайтесь на канал 👉@pythonofff
  • 👍 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →