Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Флаги явного преобразования
Флаг явного преобразования (Explicit Conversion Flag) используется для преобразования значения поля format перед его непосредственным форматированием.
Это поле можно использовать для переопределения поведения format для какого либо конкретного типа и форматирования значения. В настоящее время распространены два явных флага преобразования:
!r — преобразует значение в строку, используя функцию repr().
!s — преобразует значение в строку, используя функцию str().
В примере, в случае с флагом !r строка 'Hello' будет напечатана с кавычками в поле шириной не менее 20 символов, а в случае с флагом !s — без кавычек (в более удобном для чтения виде).
Подписывайтесь на канал 👉@pythonofff
Разбиение строки на список
У строк есть метод split(), который разбивает их по указанному разделителю и возвращает список из отдельных строк.
В качестве аргументов можно передать два значения: сам разделитель (по умолчанию знак пробела) и максимальное количество разделений.
Например, с помощью этого метода можно запросто разделить текст на отдельные слова, передав знак пробела в качестве разделителя.
Подписывайтесь на канал 👉@pythonofff
Работаем с файловыми путями
В стандартной библиотеке есть максимально удобный пакет pathlib для простой работы с файловыми путями.
Для представления пути к файлу есть класс Path, с объектами которого уже можно производить операции. Например, методы exists() и is_dir() проверяют, существует ли файл и является ли он директорией.
Но самой классной фичей является замена os.path.join() на более удобный и элегантный вариант с использованием слэшей, как показано на картинке.
Итого, пакет pathlib может стать частичной заменой os в некоторых случаях при работе с файловыми путями.
Подписывайтесь на канал 👉@pythonofff
Отсутствующие ключи в словаре
При обращении по отсутствующему ключу в словаре мы получим исключение KeyError. Но мы можем переопределить это поведение.
Для этого создадим свой собственный класс словаря, унаследовавшись от dict. После чего нам просто необходимо переопределить метод __missing__, который вызывается в базовой реализации методом dict.__getitem__ при при адресации к отсутствующему ключу.
Мы можем, например, возвращать какое-то дефолтное значение, либо определить любую другую необходимую логику поведения.
Подписывайтесь на канал 👉@pythonofff
Конструктор класса
У классов практически во всех языках есть конструкторы — это такие специальные методы, которые вызываются автоматически и инициализируют экземпляр класса.
В Python конструкторы в классах имеют название __init__(), и их почти всегда переопределяют. Делается это для того, чтобы назначить свойства объекту и выполнить предварительные действия.
Первым аргументом конструктор всегда принимает объект класса, который обозначается как self.
Подписывайтесь на канал 👉@pythonofff
Получаем и задаем лимит рекурсии
В Python не оптимизируется хвостовая рекурсия, из-за чего зачастую возникает RecursionError во время создания рекурсивных алгоритмов.
Но с помощью модуля sys можно посмотреть и даже изменить максимальную глубину рекурсии. Хотя делать это слегка опасно, так как каждый новый вызов занимает много памяти.
И вообще лучше стараться использовать не рекурсию, а обычные циклы, но это вы и так сами знаете.
Подписывайтесь на канал 👉@pythonofff
Делаем планировщик задач
К моему удивлению, далеко не все знают про пакет schedule, который позволяет планировать задачи и повторять их через промежуток времени.
Основной его плюс в том, что он максимально интуитивный и имеет гибкий функционал. А еще schedule не требует внешних зависимостей и сам в целом легковесный.
Здесь на самом деле даже объяснять особо нечего, логика методов в этом пакете понятна на примерах.
Подписывайтесь на канал 👉@pythonofff
Проверка отношения классов
Для того, чтобы проверить отношения двух классов или экземпляров (является ли класс классом наследником), есть две простые встроенные функции isinstance(object, classinfo) и issubclass(class, classinfo).
instance - возвращает True, если объект является экземпляром класса либо экземпляром подкласса данного класса.
issubclass — проверяет является ли класс наследником другого класса.
Данные функции зачастую применяются в ООП.
Подписывайтесь на канал 👉@pythonofff
Как заменить атрибут в именованном кортеже
Что делать, если значение одного атрибута необходимо изменить?
Вам нужно обновить его в данных. Для этого просто воспользуемся методом ._replace()
Подписывайтесь на канал 👉@pythonofff
Как создать namedtuple из словаря в Python
Вы заметили, как мы преобразовали словарь в именованный кортеж с помощью оператора **?
Все, что вам нужно сделать для этого — определить структуру namedtuple и передать словарь (**dict) этому именованному кортежу в качестве аргумента. Единственное требование заключается в том, что ключи словаря должны совпадать с именами полей namedtuple.
Подписывайтесь на канал 👉@pythonofff
Операции с zip архивами
Для работы с zip файлами можно использовать встроенный модуль zipfile. Если кто не помнит, то zip файл — это архив, содержащий сжатые файлы.
Просмотреть содержимое архива можно с помощью функции printdir, а извлечь все файлы можно вызвав extractfile.
Также этот модуль позволяет создавать свои zip архивы, но мы решили не усложнять пример, поэтому просто прикладываем ссылку на документацию.
Подписывайтесь на канал 👉@pythonofff
Высшее образование дистанционно
Московский технологический институт от 5300 ₽/мес.
Набор в июле!
— Высшее образование в московском вузе без выезда на сессии.
— Полностью дистанционный онлайн-формат.
— Обучайся дома, на работе, в путешествии.
— Диплом государственного образца.
— 57 направлений и программ обучения.
— Программа колледж + вуз без ЕГЭ.
Скидка 10% на обучение при оплате за год.
Перейти на сайт
#реклама 16+
tl.mti.edu.ru
О рекламодателе
Метод join у строк
У строк есть полезный метод str.join(), который принимает на вход итерируемый объект, элементами которого также должны быть строки.
Как результат получаем новую строку, которая является объединением всех элементов. При этом они разделены строкой, к которой изначально применялся метод.
Проще говоря, если применить к строке этот метод, то она станет разделителем для элементов в новой строке.
Подписывайтесь на канал 👉@pythonofff
Чем defaultdict отличается от простого словаря?
Если вы попытаетесь получить доступ к ключу, которого нет в словаре, он выдаст ошибку KeyError. В то время как при использовании defaultdict такой ошибки не будет.
Если вы попробуете обратиться к отсутствующему ключу, defaultdict просто вернет значение по умолчанию.
Синтаксис будет следующим: defaultdict(default_factory).
При обращении к отсутствующему ключу функция default_factory вернет значение по умолчанию.
Подписывайтесь на канал 👉@pythonofff
Летние Стратегии Маркетинга
Есть продукт, но нет понимания трендов этого сезона?
Хотите, чтобы реклама играла на эмоциях или была обёрнута в игровой процесс?
А ведь это одни из главных фишек нашего курса!
Последние тренды и успешные стратегии летнего маркетинга.
Нацеленность на практику и реальные кейсы.
💰 Извлечение максимума прибыли из летних акций и предложений.
Добавьте в свои кампании геймификацию для повышения вовлечённости
Эмоции продают — это факт! Узнайте про манипулятивные техники, рекламную этику, эмоциональные триггеры, реакции разных поколений на летние рекламные кампании.
Наша аудитория: маркетологи всех сортов (от бренд-менеджеров до SMM и таргетологов), предприниматели. Лето в разгаре — время сделать его прибыльным!
Узнать больше
#реклама
О рекламодателе
Что происходит, когда вы удаляете и повторно вставляете ключи в OrderedDict
При удалении ключа информация о его порядке также удаляется. Когда вы повторно вставляете ключ, он обрабатывается как новая запись и соответствующая информация сохраняется.
Подписывайтесь на канал 👉@pythonofff
Сортировка с помощью OrderedDict
Сортировка элементов, например, по возрастанию значений, может помочь в анализе данных. Давайте посмотрим, что мы можем сделать.
Сортировка элементов по ключу KEY (в порядке возрастания)
Подписывайтесь на канал 👉@pythonofff
ChainMap
ChainMap — это контейнерный тип данных, в котором хранится несколько словарей.
Если у вас несколько связанных или похожих словарей, зачастую их можно хранить вместе, в ChainMap.
Распечатать все элементы ChainMap можно при помощи .map
Подписывайтесь на канал 👉@pythonofff
OrderedDict
Словарь — это НЕупорядоченная коллекция пар ключ-значение. Однако OrderedDict поддерживает упорядочивание ключей.
Это в некотором роде подкласс словаря dict.
Давайте создадим обычный словарь и сделаем его OrderedDict, чтобы показать, в чем заключается разница.
Подписывайтесь на канал 👉@pythonofff
Counter
Объект counter предоставляется библиотекой collections. Давайте поподробнее разберем, что он собой представляет.
К примеру, у вас есть список каких-то случайных чисел. Что, если вы хотите узнать, сколько раз встречается каждое число?
Счетчик counter позволяет легко вычислить частоту. Он работает не только с числами, но и с любым итерируемыми объектами, такими как строки и списки.
Подписывайтесь на канал 👉@pythonofff
Sample Project
Sample Project — это пакет-шаблон с файлом setup.py для ручной установки пакета. Файл снабжен аннотациями, касающимися настройки скрипта и среды сборки пакета в целом.
Основан Sample project на пакете setuptools. setup.py — это скрипт сборки для пакетов, созданных с помощью setuptools.
Подписывайтесь на канал 👉@pythonofff
Что такое метод?
Метод — это такая функция, которую можно использовать для определенного типа данных. Существуют строковые методы, методы для работы с целыми числами, методы списков, словарей и т.д. Методы могут принимать или не принимать аргументы. В целом, это методы — это встроенные функции, которые делают вашу жизнь намного проще.
Иногда вы можете задаться вопросом, существует ли какой-то метод. В Python можно посмотреть весь список строковых методов, используя функцию dir() со строкой в качестве аргумента.
Подписывайтесь на канал 👉@pythonofff
Отвлекитесь от экрана — оторвитесь на ИТ-пикнике 17 августа
ИТ-специалисты, приходите с семьей и друзьями, чтобы побыть среди своих, пообщаться вживую и ярко провести летний выходной. У фестиваля больше 17-ти ИТ-партнеров. Вас ждут воркшопы, лекции от спикеров известных компаний, нетворкинг, выступления топовых музыкантов и даже детская зона. Хедлайнер вечера — Леонид Агутин, а еще будут TRITIA, Дайте танк (!), Драгни, Найк Борзов, Нееет, ты что. Вы же не пропустите такое событие?
Успейте зарегистрироваться
erid:2Vtzqw5Eta7
Реклама. АО "ТБанк", ИНН 7710140679, лицензия ЦБ РФ № 2673
Пишем обратно совместимый код
С помощью пакета six можно писать код, который запустится и на Python 2, и на Python 3. То есть код получается обратно совместимым.
Для этого в пакете есть все типы, функции и некоторые модули стандартной библиотеки, которые под капотом работают по-разному в зависимости от версии языка.
Например, в пакете поддерживаются tkinter и urllib.
Подписывайтесь на канал 👉@pythonofff
Получите диплом от НИТУ МИСИС в веб-разработке
Яндекс Практикум и НИТУ МИСИС приглашают на онлайн-программу «Веб-разработчик»
Полноценная учёба в онлайн-формате
Зачёты, сессии, лекции и семинары с гибким графиком.
На платформе Практикума
Гибкая теория, автоматическая проверка заданий и встроенная YandexGPT.
Преподаватели НИТУ МИСИС и наставники Яндекс Практикума
Они будут проводить занятия и учить вас применять теорию на практике.
Студенческий, льготы и диплом гособразца
У вас будут все преимущества студента-очника. Доступ к инфраструктуре вуза — кампусам, библиотекам и мероприятиям.
Оплатить учёбу можно разными способами: всю сумму сразу, по семестрам или с помощью госкредита — тогда ежемесячный платёж составит от 500 ₽, а государство погасит часть кредита за вас.
Подать заявку
#реклама 16+
practicum.yandex.ru
О рекламодателе
OrderedDict
Словарь — это НЕупорядоченная коллекция пар ключ-значение. Однако OrderedDict поддерживает упорядочивание ключей.
Это в некотором роде подкласс словаря dict.
Давайте создадим обычный словарь и сделаем его OrderedDict, чтобы показать, в чем заключается разница.
Подписывайтесь на канал 👉@pythonofff
Аннотация типов
Тайп хинтинг был добавлен в python еще в версии 3.5 вместе с библиотекой typing, в которой содержались структуры нужные для создания дженериков для аннотирования переменных. Тогда синтаксис аннотирования работал при инициализации переменных. В последствии в версии 3.6 эта возможность была расширена и стало возможно объявлять типы переменных вообще в любом месте кода.
В python 3.9 была добавлена возможность использовать в качестве дженериков для аннотирования встроенные коллекции, вместо структур typing'а (List, Dict, Tuple...).
И наконец в 3.10 на замену перечисления возможных принимаемых типов через typing.Union пришел опреатор | (or). Также в 3.10 был изменен синтаксис создания тайпалиасов, чтобы разграничить с присваиванием переменной, теперь лучше это делать непосредственно через TypeAlias.
Подписывайтесь на канал 👉@pythonofff
Jobski - твой помощник при поиске работы в IT
Сервис индивидуально подбирает вакансии, учитывая ваш опыт, навыки и стек технологий.
Узнать больше
#реклама
jobski.ru
О рекламодателе
Пасхалка
Модуль __future__ позволяет подключать функционал из будущих версий языка. Например, можно попробовать импортировать фигурные скобки как в си-подобных языках.
Но будет вызвано исключение, которое говорит "not a chance", что означает "ни единого шанса". Однако есть ещё один интересный момент, а именно — исходный код этого модуля.
Оказывается, интерпретатор CPython сначала запускает файл future.c, когда встречается импорт этого модуля.
Подписывайтесь на канал 👉@pythonofff
Defaultdict
Словарь представляет из себя неупорядоченный набор ключей и значений.
В парах ключ:значение ключи должны быть уникальны и неизменяемы. Поэтому список не может быть ключом словаря, так как он изменяемый.
Подписывайтесь на канал 👉@pythonofff