Telegram Web Link
Используйте dict.get() вместо dict[]

Есть несколько способов получения значений из словарей, и даже по такой теме разработчики часто спорят.

Многие получают значения по ключам через квадратные скобки, но если такого ключа нет, то будет вызвано исключение.

Поэтому мы считаем, что лучше использовать метод get у словарей. Его основной плюс заключается в том, что он принимает опциональный аргумент, отвечающий за значение по умолчанию.

Таким образом, если значение по ключу не найдено, то вернется дефолтное значение.

В итоге, мы убираем возможные ошибки в случае, если нужных ключей в словаре нет.

#словари
Сортировка списков

В Python есть два встроенных способа для сортировки списков — функция sorted() и метод list.sort(). Результат в обоих случаях одинаков, но всё же есть нюансы.

Функция sorted() принимает на вход аргумент в виде списка, а возвращает уже новый, отсортированный список. При этом исходный список не изменяется.

Метод sort() в свою очередь применяется к списку, изменяет его непосредственно и ничего не возвращает.

#списки
Рынок облаков в России за год вырос на 15.100.000.000 рублей

Цифра большая, но динамика показывает, что в ближайшие 3-5 лет внедрение облачных технологий будет иметь ещё более быстрые темпы – продукт полезен и удобен для IT.

Поэтому рекомендуем подписаться на канал Cloud, чтобы не пропускать полезные материалы, подборки новостей, а также бесплатные практические вебинары, которые будут полезны для развития системы умного бизнеса!
Разница между == и is

Многие разработчики не понимают разницу этих двух операторов сравнения. Из-за неправильного использования == и is в приложениях могут возникнуть странные ошибки.

Оператор == проверяет равенство значений двух объектов. А оператор is проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.

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

#тонкости
Форматируем строку для URL-адреса

Для начала стоит вспомнить, что слаг (slug) — это уникальная строка-идентификатор, понятная человеку и содержащая только "безопасные" символы: латинские символы в нижнем регистре, цифры и дефис.

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

Выше в коде мы написали простую функцию, где использовали методы lower() для приведения в нижний регистр и strip() для удаления пробелов слева и справа.

Также для удаления некоторых символов и замены на знак дефиса были использованы регулярные выражения и встроенный пакет re для работы с ними.

#строки #re
Простой, но мощный веб-фреймворк

Самым популярным фреймворком для разработки серверной части на Python является Flask. К слову, он обгоняет даже Django по звездам на GitHub.

Flask предназначен для быстрого и легкого старта работы с возможностью масштабирования до сложных приложений. А коммьюнити предоставляет множество расширений для фреймворка.

Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу http://localhost:5000/ и посмотреть результат.

#модули
Функции только с позиционными параметрами

Если с помощью inspect посмотреть на то, как объявлена встроенная функция float, то увидим, что есть входный параметр x и еще какой-то непонятый слэш.

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

Такое поведение как раз задает тот слэш. Параметры, записанные до него, можно передать только как позиционные. После него – как угодно, все будет работать стандартно.

#функции
Избегайте циклы с коллекциями

Представим задачу: требуется создать новый список, элементами которого будут являться квадраты чисел другого списка. Большинство сразу же напишут цикл for.

Но такой подход займет как минимум три строчки: объявление новой переменной, создание цикла и кода внутри него. Более того, также снижается скорость работы скрипта.

В коде выше мы привели две достойные альтернативы – генератор списка и функция map. В обоих вариантах не только код становится лаконичнее, но и заметно повышается производительность.

#совет
Протоколы

Термины "протокол итератора" или "протокол дескрипторов" уже привычны и используются давно. Но теперь можно описывать протоколы в виде кода и проверять их соответствие на этапе статического анализа.

Протокол описывается как обычный класс, наследующийся от Protocol. Он может иметь методы (в том числе с реализацией) и поля. Реальные классы, реализующие протокол могут наследоваться от него, но это не обязательно, как показано в примере.

Хоть это и не совсем интерфейсы, но все же классная штука. Еще важно, что протоколы, как и все остальные фишки аннотаций типов, используются в основном со статически типизированным mypy.

#typing #аннотации
Сравниваем Django и Flask

Оба фреймворка крайне мощные, но выбрать надо что-то одно. Из общеизвестных фактов: Django – самый востребованный в плане работы, Flask – наиболее производительный.

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

Если в приоритете трудоустройство, то следует изучать Django. Но если вы хотите быстро начать создавать пет-проекты или изучать веб в целом, то рекомендуем рассматривать Flask.

#сравнение
Превращаем PDF в текст

Думаю, все периодические работают с PDF-документами. И зачастую это ручная и скучная работа. Но Python может автоматизировать даже такую рутинную задачу.

Модуль pdftotext создан именно для работы с документами в PDF формате. Устанавливается он через пакетный менеджер pip, а использовать его проще простого. Все основные операции представлены на картинке выше.

Кстати, здесь ещё интересно то, что исходный код модуля написан на C++. Поэтому есть небольшая вероятность, что придётся повоевать с зависимостями.

#pdftotext
Делаем ошибки более читаемыми

В Python есть удобный модуль pretty_errors, который делает стандартный вывод исключений и их traceback более удобным для чтения и красивым в целом.

Установить его можно через пакетный менеджер pip. А для того, чтобы он заработал, достаточно импортировать его в ваш код.

Как результат, вывод ошибок в вашей программе будет выглядеть более читаемым. Более того, разные части вывода будут помечаться разным цветом вместо монотонного серого цвета.

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

#исключения #pretty_errors
Форматируемые шаблоны строк

Модуль string из стандартной библиотеки содержит интересный класс Template, который позволяет вполне удобно создавать шаблоны строк для дальнейшего форматирования.

Такой способ появился ещё в Python 2.4, как замена %-форматированию (PEP 292), но популярным так и не стал. Поддерживает передачу значений по имени и использует $-синтаксис как в PHP.

В новых проектах, конечно, используются чаще всего f-строки и иногда метод format, но всё же о Template стоит хотя бы знать на случай, если придется работать с легаси кодом.

#строки
Константы пакета string

Встроенный модуль string предоставляет расширенный функционал для работы со строками. Про форматируемые шаблоны из этого пакета мы рассказывали в прошлом посте.

Сейчас поговорим про константы этого модуля. Из интересного стоит выделить ascii_letters, punctuation, digits и whitespace — символы ascii, знаки пунктуации, цифры и пробельные символы.

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

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

#строки #string
Работаем с zip архивами

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

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

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

#zipfile
Подключаемся к серверу по ssh

Пакет paramiko позволяет устанавливать соединение с удаленными машинами по протоколу SSH2 и производить там все те же операции, если бы вы подключались через, например, утилиту ssh на линуксе.

Использовать модуль достаточно просто, пример основный методов на картинке выше. Кстати, интересный факт, Paramiko — это сочетание слов "параноик" и "друг" на языке эсперанто.

Устанавливается пакет привычным образом через пакетный менеджер pip. А документацию можете изучить тут.

#ssh
Переводим питонячий в человеческий

Нашел офигенный пакет humanize, который может переводить числа и даты в читаемый для человека текст. То есть все костыли для таких задач сразу заменяются буквально одной строчкой.

К примеру, из сложного объекта timedelta можно получить "2 дня, 1 час и 33.12 секунд" или же "5.00 x 10²" из числа 500. Больше примеров можете посмотреть на картинке, прикрепленной к посту.

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

#humanize
Находим опечатки в тексте

Полезный пакет spellchecker позволяет находить опечатки в тексте и даже дает возможные варианты исправлений.

Под капотом модуль использует алгоритм расстояния Левенштейна. А сам код основан на статье, написанной в блоге Питера Норвига. Короче, реализация интересная, советую поизучать.

Но даже если не вникать в подробности, то пакет использовать крайне легко. Примеры использования класса SpellChecker и его методов correction и candidates показаны на картинке.

Пакет поддерживает 6 языков, включая русский. Но за подробностями отправляю вас читать документацию.

#spellchecker
Найти работу в айти можно 2 методами:

Первый. Бесконечно скроллить HeadHunter и пытаться что-то выклевать на LinkedIN. Офигеть от условий и закрыть.

Второй. Подписаться на Python Job. Это база адекватных предложений, где даже для новичков много мест с хорошей з/п.

Тут найдете работу как в Яндексе (именно сюда крупняки присылают вакансии напрямую), так и в молодых стартапах!

В общем, не теряйте времени и находите работу в 2 клика: @job_python
Делаем планировщик задач

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

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

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

#schedule
2025/02/24 18:08:58
Back to Top
HTML Embed Code: