Python академия
7.64K subscribers
2.46K photos
5 videos
275 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Отсутствующие ключи в словаре

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍2
Что происходит, когда у нас есть избыточные ключи в ChainMap?

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

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

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍3
Как использовать функцию pow() в Python

Python также имеет встроенную функцию pow(), которая возводит число в указанную степень. Синтаксис данной функции выглядит следующим образом:

pow(base, exponent)

Приведенный выше код интерпретируется как baseexponent, то есть число base в степени exponent.

Функция pow() принимает два аргумента: число (известное как основание или base) и степень, в которую число должно быть возведено (показатель степени — exponent).

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


def make_counters():
counters = []

for i in range(3):
def counter():
return i
counters.append(counter)

return counters


funcs = make_counters()
print([f() for f in funcs])


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