Python академия
7.74K subscribers
2.31K photos
5 videos
267 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Удаление специальных символов из строки с применением метода sub из пакета re

Давайте воспользуемся функцией sub из пакета re, чтобы удалить специальные символы.

Метод sub() используется для гибкой замены одних символов другими.

Подписывайтесь на канал 👉@pythonofff
👍4🔥2
Форматируем строку для URL-адреса

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

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍21
Как объединить словари в Python с помощью метода dict.update()

Самый очевидный путь – найти уже готовую функцию, то есть посмотреть на то, какие есть встроенные методы у словарей. Если вы исследуете класс словарей dict, вы найдете много различных методов. Один из них — метод update(), который можно использовать для «вливания» одного словаря в другой. Он нам и нужен!

Подписывайтесь на канал 👉@pythonofff
👍3🔥1
Разница между == и is

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍10🔥1
Как сделать PATCH-запрос

Иногда нам не нужно полностью заменять старые данные. Скорее мы хотим изменить только определенные поля. В этом случае мы используем запрос PATCH.

Давайте обновим категорию (category) продукта обратно с clothing (одежды) на electronic (электронику), сделав запрос PATCH к конечной точке products/<product_id>

Подписывайтесь на канал 👉@pythonofff
👍1
Знакомим с разработкой и учим думать, как программист.

Подготовительный 14-дневный курс по Python для новичков 🐍

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

Вас ждет 69 уроков теории и практики прямо в браузере, вебинары, лайвкодинг и первая собственная программа на Python, написанная под руководством опытного наставника.

Начинаем 9 ноября, вы с нами?
Исполняем код в виде строки

Эта функция нужна для того, чтобы выполнять код, переданный в виде строки.

Первым аргументом передается сама строка, в которой записан код, а также можно передать еще два опциональных аргумента globals и locals в виде словарей.

Но в продакшне такое использовать не рекомендуется, так как подобная штука крайне небезопасна. А для общего развития знать полезно.

Подписывайтесь на канал 👉@pythonofff
Как сделать запрос PUT

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

В запросе POST мы создали новый продукт с идентификатором 21. Давайте обновим старый продукт на новый, сделав запрос PUT к конечной точке products/<product_id>.

Подписывайтесь на канал 👉@pythonofff
👍2
Простой, но мощный веб-фреймворк

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍5
Пример генератора данных из библиотеки Keras

Одно из типичных применений генераторов — это использование генератора данных в библиотеке Keras. Причина, по которой он полезен, заключается в том, что мы не хотим хранить все данные в памяти, а хотим создавать их на лету, когда это необходимо в процессе обучения. Дело в том, что в Keras модель нейронной сети обучается батчами, поэтому генератор должен выдавать строго определенные пакеты данных.

Подписывайтесь на канал 👉@pythonofff
👍3
Функции только с позиционными параметрами

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍2
Недавно в Yandex Cloud объявили об обновлении Yandex DataSphere. Команда не просто запустила новый UI, но создала полноценное рабочее место для дата-сайентиста с инструментами для командной работы. Теперь в сервисе:

🔹 проект — главная сущность, с которой работает дата-сайентист — им можно управлять, не переходя в среду разработки;
🔹 интеграция с кластерами Data Proc, которые обеспечивают расчёт в MapReduce-парадигме;
🔹 эксплуатация моделей — быстрый переход в инференс: после обучения можно нажатием нескольких кнопок выводить модель в продакшн;
🔹 дашборд здоровья сервиса — отслеживает состояние созданных сервисов, показывает график нагрузки, состояние серверов, занятые ресурсы;
🔹 сообщества — позволяют объединять проекты разных специалистов и удобно организовать командную работу в больших компаниях.

Подробнее узнайте в статье.

Попробуйте возможности нового Yandex DataSphere в деле! Начать работу ➡️
Декораторы в Python

Декораторы — мощный инструмент в Python. Вы можете их использовать для тонкой настройки работы класса или функции. Декораторы можно считать функцией, которая применена к другой функции. Чтобы определить функцию-декоратор для декорируемой функции, используется знак @ и после него название функции. Из этого следует, что декоратор принимает в качестве аргумента функцию, которою он декорирует.

Рассмотрим функцию square_decorator(), которая в качестве аргумента принимает функцию и в результате также выдают функцию.

Подписывайтесь на канал 👉@pythonofff
👍4🤨1
Избегайте циклы с коллекциями

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

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

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

Подписывайтесь на канал 👉@pythonofff
👍9
Контекст функций

Язык Python допускает применение вложенных функций, в которых вы можете определить внутреннюю функцию внутри внешней. В Python есть несколько замечательных свойств, связанных со вложенными функциями.

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

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

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

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

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

Функция zip() позволяет создавать итерируемый объект, состоящий из кортежей. Zip принимает в качестве аргумента несколько последовательностей (m1, m2,…, mn), в результате чего создается итерируемый объект, состоящий из i кортежей. В каждом кортеже содержится по одному элементу из каждого контейнера. Таким образом, i-й кортеж представляет собой(m1i, m2i,…, mni)

Подписывайтесь на канал 👉@pythonofff
👍4
Удалённая работа и фриланс становятся всё более популярными. Рынок заполнился горе-фрилансерами, которые демпенгуют и забирают себе заказы.

Хочешь научиться работать грамотно, развиваться и забирать самые хорошие заказы?

Подписывайся на блог о правильных подходах в Freelance, аутсорсинге и удалёнке https://t.me/+TnC6aqQkP9xjMDBi

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

Ссылка на канал: https://t.me/+TnC6aqQkP9xjMDBi
🤮2
Превращаем PDF в текст

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

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

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

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

В традиционных языках программирования вам нужна переменная цикла для перебора различных значений контейнера. В Python это упростили: вы можете получить доступ к переменной цикла вместе со значением итерируемого объекта. Функция enumerate(x) возвращает две итерируемые переменные. Одна из них изменяется в диапазоне от 0 до len(x) - 1, а другая представляет собой элементы x.

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