Senior Python Developer
41.5K subscribers
2.18K photos
5 videos
1 file
543 links
№ 4931117861
Публикуем интересные/полезные фичи/библиотеки языка.

По вопросам сотрудничества: @adv_and_pr

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
Узнаем информацию о стране

countryinfo — модуль Python для возврата данных о странах, информации ISO и штатах/провинциях внутри них. Установка пакета — pip install countryinfo.

В нашем примере мы узнаем население, официальный язык и столицу Испании.

Документацию пакета можно найти здесь.
Узнаем погоду с помощью Python

PyOWM — это клиентская библиотека-оболочка Python для веб-API OpenWeatherMap (OWM). Это позволяет быстро и легко использовать данные OWM из приложений Python с помощью простой объектной модели и удобным для человека способом. Установка библиотеки — pip установить pyowm.

Для того, чтобы воспользоваться данной библиотекой, нужно зарегистрироваться на данном сайте (очень быстрая регистрация) и получить токен на почту.

В нашем примере мы узнаем погоду в данный момент в городе Мадрид (Испания). Документацию пакета можно найти здесь.
#вопросы_с_собеседований
Что плохого в следующем коде?

Ответ:
В Python нет объявлений переменных, поэтому он должен сам определить их область действия. Если внутри функции имеется обращение к переменной, то она считается локальной. Переменная count выше является глобальной, поэтому код выбрасывает ошибку.
Работа с регистрами

Форматирование текста — это боль каждого data scientist’а. Слова и предложения в разных форматах создают много проблем при очистке данных. Однако и для этих задач в Python есть нужные функции.
Форматируемые шаблоны строк

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

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

Метод partition() разбивает строку по заданной подстроке. После этого результат возвращается в виде кортежа. При этом подстрока, по которой осуществлялась разбивка, тоже входит в кортеж.
Обрезаем видео в Python

MoviePy — это модуль Python для редактирования видео, который можно использовать для основных операций с видео и GIF.

Установка пакета — pip install moviepy. Подробнее с данным примером можно ознакомиться здесь.
Списковое включение (быстрый способ)

Списковое включение — самый эффективный способ итерации любого списка. Это итерирование однострочного списка с включением в него цикла. Посмотрите приведенный выше пример кода, чтобы понять, как это работает.
Фронтенд и Python

Brython предназначен для замены Javascript в качестве языка сценариев для веб-страниц. Таким образом, это по сути Python 3, адаптированный к среде HTML5, то есть с интерфейсом к объектам и событиям DOM.

На картинке можете посмотреть простую HTML страницу со вставкой скрипта на Brython. Больше примеров можно найти в их галерее.

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

Пакет phonenumbers основан на библиотеке libphonenumber от Google, которая позволяет форматировать, парсить и проверять номера телефонов.

Основным классом, который представляет номер, является PhoneNumber. Объект можно создать, вызвав метод parse() и передав в аргументы номер телефона в виде строки. Вторым аргументом также можно указать страну.

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

Для того, чтобы определить поведение при проверке на истинность объектов классов в python3 есть "магический" метод __bool__(), который был добавлен на замену устаревшему __nonzero__() в python2.

Если данный метод определен в классе, то он будет вызываться при каждой проверке объекта на истинность а также с помощью функции bool(). Метод должен возвращать False или True.

Если __bool__() не определен, будет вызываться метод __len__(), если он определен, и, соответственно, объект будет считаться истинным, если результат __len__() не будет равен нулю. Если в классе не определены ни __len__(), ни __bool__(), все его экземпляры будут истинными.
Аргументы командой строки

При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле sys.

Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.
Метод Counter.subtract()

Метод Counter.subtract() вычитает элементы текущего счетчика cnt и итерируемой последовательности или другого словаря или другого счетчика Counter(). Подобно методу словаря dict.update(), но вычитает количество (значения ключей), а не заменяет их.

Значения ключей как у счетчика так и у словаря могут быть нулевыми или отрицательными.
Хеширование паролей Python
Для Python 3.x


Здесь пароли будут хешироваться для последующего сохранения в базе данных.

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

salt используется для предотвращения перебора по словарю (dictionary attack) и атак радужной таблицы (rainbow tables attacks).
Метод str.isalnum()

Метод str.isalnum() возвращает True, если все символы в строке являются буквенно-цифровыми и есть хотя бы один символ, в противном случае False.
Пишем 5 простых Telegram-ботов на Python

В этой статье мы реали­зуем прос­той, но край­не полез­ный про­ект на Python — бота для Telegram. Боты — это неболь­шие скрип­ты, которые могут вза­имо­дей­ство­вать с API, что­бы получать сооб­щения от поль­зовате­ля и отправ­лять информа­цию в раз­ные чаты и каналы.

https://xakep.ru/2021/11/28/python-telegram-bots/
Метод compress()

Метод compress() модуля itertools создает итератор, который фильтрует элементы из данных s, возвращая только те, которые имеют соответствующий элемент, равный True или 1 в последовательности lst.
Сохраняем бинарные данные

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

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

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

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

Таким образом, при импорте вида from module import * из модуля c подобной записью подключатся только объекты с названиями из списка __all__.

Тем не менее, в примере выше импортировать функцию foo из такого модуля всё ещё можно, например, с помощью записи from module import foo.