Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Простые структуры данных
Однострочником, также очень просто вызвать инициализацию структур данных в Python. Гарольд Купер, реализовал однострочную древовидную структуру, используя следующий код
Подписывайтесь на канал 👉@pythonofff
Используйте объекты, которые поддерживают оператор with
Открыть файл и заблокировать фрагмент кода можно с помощью оператора with, но можно ли сделать это, пользуясь собственным методом? Да, можно реализовать протокол context manager, используя методы enter и exit
Подписывайтесь на канал 👉@pythonofff
Преобразование списка строк
Допустим, у нас есть список, содержащий числа в строковом формате. Чтобы преобразовать все эти элементы в числа с плавающей запятой, мы перебираем список в цикле for. Каждый элемент мы преобразуем из строкового в вещественный. Делается это при помощи функции float().
Мы создаем пустой список number, куда добавим наши числа в формате float. Далее мы используем цикл for для добавления каждого элемента из исходного списка в список number. При этом перед добавлением мы передаем в функцию float() каждый элемент, чтобы преобразовать его из строки в число с плавающей запятой.
Подписывайтесь на канал 👉@pythonofff
Абстракция словарей/множеств
С абстракциями списков (list comprehension) вы скорее всего сталкивались, но вот с абстракциями словарей/множеств (dict/set comprehension) — вряд ли. Они просты в использовании и так же эффективны.
Подписывайтесь на канал 👉@pythonofff
1 декабря в Москве пройдет большая IT-конференция Импульс от Холдинга Т1.
В программе — выступления про цифровизацию, архитектуру, чистый код и формирование эффективных продуктовых команд от тех, кто работает над передовыми российскими разработками прямо сейчас:
• Алексей Фетисов - генеральный директор Холдинга Т1
• Павел Гонтарев, управляющий директор VK Тech
• Артем Кострюков, CEO TestIT
• Михаил Степнов, Руководитель центра R&D МТС Big Data/ CDO МТС Маркетолог
• Мария Тихонова, главный инженер по разработке в SberDevices
и другие эксперты.
А в завершении конференции — выступление группы Uma2rman.
Регистрируетесь. Вход бесплатный.
ЕРИД: LdtCKBQST
18+ Реклама. ООО «Т1»
ОГРН 1197746617419
Несколько возможных типов возвращаемых значений
Если в вашей функции есть переменная, принимающая значения различных типов, можно использовать типы typing.Optional или typing.Union.
Используйте Optional, если значение будет либо определенного типа, либо исключительно None.
Подписывайтесь на канал 👉@pythonofff
✌️ Привет! На связи Podlodka Python Crew.
Крупные сервисы успешно разрабатывают не только на языках со статической типизацией.
🐍 Поэтому 4 декабря запускаем новый сезон с темой «Python для энтерпрайза».
Вы сможете получить новый опыт и начать работать над сложными продуктовыми решениями. А если вы уже в enterprise, то узнаете больше про эффективные принципы работы над корпоративным продуктом.
В этот раз мы пригласили крутых экспертов по Python из компаний-гигантов — например, КРОК, Точки, X5 Tech, Райффайзен банка, Selectel и других. На докладах, воркшопах и круглых столах мы:
🔸 Послушаем, как меняются ценности и подходы у разработчика в enterprise.
🔸 Узнаем, как собирать и поддерживать шаблон репозитория для микросервисов.
🔸 Разберём принципы Domain-Driven Design на примере фреймворка Django.
🔸 Выясним правила работы с observability: как настраивать мониторинг, логирование и трейсинг.
👉 больше подробностей — на сайте: https://podlodka.io/pythoncrew (успей купить билет со скидкой до 28 ноября)
Ограничьте использование процессора и памяти
Если вы не хотите оптимизировать память вашей программы или корректировать работу процессора, то можно просто установить лимиты. К счастью, в Python для этого есть специальная библиотека
Подписывайтесь на канал 👉@pythonofff
Перезагрузка оператора
Python поддерживает перезагрузку оператора. Зная эти слова, вы сразу кажитесь настоящим компьютерным гением.
На самом деле, концепция довольно проста. Вы когда-нибудь задавались вопросом, почему в Python можно использовать оператор + для добавления чисел и конкатенации строк? Это и есть перезагрузка оператора в чистом виде.
Вы можете определить объекты, которые будут пользоваться стандартными символами операторов Python по-своему. Тогда их можно будет использовать в зависимости от содержимого объектов, с которыми вы работаете.
Подписывайтесь на канал 👉@pythonofff
При необходимости используйте итератор со срезами
Итератор — это инструмент для поточной обработки данных. Он отвечает за упрощение навигации по элементам: списку, словарю и так далее. Это такой объект-перечислитель, который выдаёт следующий элемент. В основном его используют в цикле for.
Подписывайтесь на канал 👉@pythonofff
Упростите использование операторов сравнения
Использовать все операторы сравнения для одного класса может быть довольно сложно, учитывая, что их немало: It, le, gt или ge. Но есть ли более простой способ сделать это? Здесь поможет functools.total.ordering
Подписывайтесь на канал 👉@pythonofff
Сделайте «санитарную» обработку входных данных эффективнее
Чем больше размер программы, тем выше шансы пропустить уязвимость в коде. Один из способов обезопасить себя от возможных ошибок — очистка входных данных перед выполнением программы (input sanitization).
В большинстве случаев при таком подходе достаточно поменять регистр символов или использовать регулярные выражения.
Подписывайтесь на канал 👉@pythonofff
Передавайте в функцию сколько угодно элементов — используйте kwargs
Если при разработке программы нужно выполнить несколько похожих действий, то лучшее решение — определить функции для многоразового использования кода. Для этого вызовите функцию с аргументом. Но что делать, если аргументы функции определены, а вам нужно передать больше значений? Для этого можно использовать kwargs — функции для именованных аргументов.
Подписывайтесь на канал 👉@pythonofff
sh
Python — это отличный скриптовый язык. Иногда использование стандартных библиотек os и subprocess становится настоящей головной болью.
А библиотека sh является отличной альтернативой.
С ней вы сможете вызывать любую программу как обычную функцию — это крайне полезно для автоматизации рабочего процесса и задач, причем все делается в самом Python.
Подписывайтесь на канал 👉@pythonofff
Профилирование — это процесс, который помогает при работе с данными и их обработке.
Пожалуй, одна из самых известных Python-библиотек для этого – Pandas. Данная библиотека является довольно понятной в использовании и благодаря ей можно быстро выполнять анализ данных.
Кроме того, Pandas имеет встроенную функцию .plot() как часть класса DataFrame, что позволяет демонстрировать на графиках обрабатываемые данные.
Подписывайтесь на канал 👉@pythonofff
Сила «однострочников» (One-Liners)
Вы устали пробираться между строк кода и теряться в условных конструкциях? Тогда, однострочники Python — это то, что вам нужно.
Подписывайтесь на канал 👉@pythonofff
Как перевернуть список в Python с помощью срезов
Срезы работают аналогично функции range(), которую мы разобрали ранее.
Срез также включает в себе три параметра: start, stop и step.
Синтаксис выглядит следующим образом: [start:end:step].
Если вы хотите вывести все элементы, вы можете использовать один из двух следующих способов
Подписывайтесь на канал 👉@pythonofff
импорт из __future__
Одно из следствий популярности Python — постоянная разработка следующих версий. Новые версии несут в себе новые функции, если, конечно, ваша версия не устаревшая.
Бояться здесь нечего. Модуль_future_ позволяет импортировать в Python функционал будущих версий. Без всяких преувеличений, перед вами — настоящее путешествие во времени или магия.
Подписывайтесь на канал 👉@pythonofff
Упрощенный вывод данных
Он позволяет вывести строчный массив одной строкой, с разделением запятыми. Нам не нужно использовать .join() и циклы.
Подписывайтесь на канал 👉@pythonofff
Легко пропускайте начало итерируемого объекта
Иногда приходится работать с файлами, которые начинаются с неизвестного нам количества бесполезных строк, например, с комментариев. И тут itertools снова предлагает простое решение
Подписывайтесь на канал 👉@pythonofff
Задание определенной точности
Иногда нам нужно указать количество знаков после запятой в числе. В такой ситуации мы используем все ту же функцию float(), а после нее — функцию format(), чтобы определить количество десятичных знаков в нашем числе.
В данном примере мы работаем со строкой «6.759104». Нам нужно преобразовать эту строку в число с плавающей запятой и оставить только 4 цифры после запятой.
Подписывайтесь на канал 👉@pythonofff
collections
В Python есть отличные встроенные типы данных, но иногда они ведут себя не так, как вам бы хотелось.
К счастью, в стандартной библиотеке Python присутствует модуль collections. Это полезное дополнение предлагает расширенные типы данных.
Подписывайтесь на канал 👉@pythonofff
inspect
Модуль inspect идеален для понимания общего «закулисья» Python. А еще вы можете вызывать его методы!
Пример кода ниже использует inspect.getsource() для вывода собственного номера строки. А inspect.getmodule() используется для печати модуля, в котором он был определен.
Последняя строка кода выводит собственный номер строки.
Подписывайтесь на канал 👉@pythonofff
Комбинации вложенных списков
Пожалуй, одна из моих любимых библиотек в Python — это itertools. Чтобы преобразить код, содержащий десятки списков, в глубоко вложенный список, достаточно нескольких манипуляций. itertools именно то, что вам нужно, чтобы решить эту задачу.
Подписывайтесь на канал 👉@pythonofff
pprint
Стандартная функцияprint в Python знает свое дело. Но попробуйте вывести на печать крупный и вложенный объект, и вас ждет сплошное разочарование.
Вот здесь-то и приходит на помощь модуль pretty-print из стандартной библиотеки. Он выводит сложно-структурированные объекты в удобочитаемом виде.
Настоящий must-have для любого Python-разработчика, имеющего дело с нетривиальными структурами данных.
Подписывайтесь на канал 👉@pythonofff
Деление с плавающей запятой
При делении целых чисел в Python результат будет целым, даже если на самом деле он был дробным. Чтобы получить корректный ответ, приходится делать что-то подобное:
result = 1.0/2
Но у этой проблемы есть и другое решение
Подписывайтесь на канал 👉@pythonofff
😎Устали от SQL запросов и хочется абстракций? Вам нужна ORM. Но ее надо уметь готовить.
Начните прокачивать скиллы с открытого урока «ORM: добро и зло», который пройдет 20 ноября в 20:00 мск. А продолжить сможете на практическом онлайн-курсе «Python Developer на специальных условиях.
Во время вебинара с Евгением Ревняковым, обсудим нюансы работы с БД при использовании механизма ORM. Поймем, как можно положить базу и как этого избежать. На примере связей one-to-many и many-to-many рассмотрим проблему n+1 запроса и оптимизации, которые дает нам ORM на уровне БД (db level) и в самом интерпретаторе (python level).
Регистрируйтесь бесплатно прямо сейчас и ставьте событие в календарь, чтобы ничего не пропустить: https://vk.cc/cspPFuРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Что такое аннотации типов?
Аннотации типов – это новая возможность, описанная в PEP484, которая позволяет добавлять подсказки о типах переменных. Они используются, чтобы информировать читателя кода, каким должен быть тип переменной.
Это придаёт немного статический вид коду на динамически типизированном Python. Достигается это синтаксисом: <тип> после инициализации / объявления переменной.
Подписывайтесь на канал 👉@pythonofff
Подсказки типа
Python — это язык с динамической типизацией. Вам не нужно указывать тип данных при определении переменных, функций, классов и т.д.
Такой прием сокращает время разработки. Однако есть и более страшные вещи, чем ошибка при выполнении, вызванная простой проблемой ввода.
Подписывайтесь на канал 👉@pythonofff
Counter
Ещё один прекрасный модуль из стандартной библиотеки — collections, и я хотел бы познакомить вас с collections.Counter. Используя Counter, легко получить счётчик списка. Это полезно для получения общего количества значений в данных, нулевого счёта данных и просмотра уникальных значений. В counter есть множество функций, которых нет в Pandas Series, что делает его значительно полезнее в определённых ситуациях
Подписывайтесь на канал 👉@pythonofff