Проверяем тип объекта
Раз уж в предыдущем посте затронули модуль
Функции
#inspect
Раз уж в предыдущем посте затронули модуль
inspect
, то давайте еще поговорим про некоторые его возможности.Функции
ismodule()
, isclass()
, ismethod()
и isfunction()
проверяют переданный объект на то, является ли он модулем, классом, методом или функцией соответственно.#inspect
👍4
Трюк с f-строками
Думаю, про f-строки как метод форматирования все уже знают. Напоминаю, что появились они еще в Python 3.6.
Но им добавили еще одну классную фичу в обновлении 3.8 — можно выводить имя переменной и сразу ее значение, добавив знак равно как показано на картинке.
#строки
Думаю, про f-строки как метод форматирования все уже знают. Напоминаю, что появились они еще в Python 3.6.
Но им добавили еще одну классную фичу в обновлении 3.8 — можно выводить имя переменной и сразу ее значение, добавив знак равно как показано на картинке.
#строки
👍5
Изменение в контекстных менеджерах
Как вы знаете, для удобного управления жизненным циклом ресурсов в python существуют контекстные менеджеры. Но до недавнего времени, чтобы открыть несколько ресурсов в рамках одной области видимости
С выходом python 3.10 появился новый синтаксис, позволяющий в круглых скобках указывать несколько контекстных менеджеров. А также мы можем использовать переменную созданную одним контекстным менеджером в рамках следующего за ним менеджера.
Это стало возможным благодаря появлению нового синтаксического анализатора PEG в python 3.9. И, строго говоря, python 3.9 уже допускал данный синтаксис, хотя официально еще не поддерживался.
#with
Как вы знаете, для удобного управления жизненным циклом ресурсов в python существуют контекстные менеджеры. Но до недавнего времени, чтобы открыть несколько ресурсов в рамках одной области видимости
with
нам требовалось либо прописывать их в одну строку либо использовать синтаксис переноса - обратный слеш \
(но это противоречит PEP8).С выходом python 3.10 появился новый синтаксис, позволяющий в круглых скобках указывать несколько контекстных менеджеров. А также мы можем использовать переменную созданную одним контекстным менеджером в рамках следующего за ним менеджера.
Это стало возможным благодаря появлению нового синтаксического анализатора PEG в python 3.9. И, строго говоря, python 3.9 уже допускал данный синтаксис, хотя официально еще не поддерживался.
#with
👍2
Яндекс проведет YaTalks — главный ивент для разработчиков
Конференция пройдет 3 и 4 декабря. В первый день — препати, во второй — основная программа. Кроме докладов по актуальным и практическим темам предполагаются и дискуссии — будет, о чем поспорить:
— Романтика vs стабильность: как найти баланс между звёздными целями и ежедневными задачами?
— Женщины в IT: как избавить индустрию от стереотипов?
— Какой путь выбрать: попасть в компанию мечты или создать её самому?
— Как дорасти до топ-менеджера и стоит ли к этому стремиться?
Подробная программа и регистрация на YaTalks по ссылке.
Конференция пройдет 3 и 4 декабря. В первый день — препати, во второй — основная программа. Кроме докладов по актуальным и практическим темам предполагаются и дискуссии — будет, о чем поспорить:
— Романтика vs стабильность: как найти баланс между звёздными целями и ежедневными задачами?
— Женщины в IT: как избавить индустрию от стереотипов?
— Какой путь выбрать: попасть в компанию мечты или создать её самому?
— Как дорасти до топ-менеджера и стоит ли к этому стремиться?
Подробная программа и регистрация на YaTalks по ссылке.
yatalks.yandex.ru
YaTalks 2023 — Yandex's premier conference for the IT community
On December 5-6, Moscow and Belgrade will host over 100 IT industry experts and scientists delivering technical presentations on development, ML, and giving popular science lectures.
👍1
Логирование
Логировние является неотъемлемой частью разработки. Логи показывают информацию о текущем состоянии программы. И чем лучше выстроено логирование, тем проще будет разобраться в нестандартных ситуациях.
Python поставляется для этих целей с гибким модулем
Созданный объект Logger предоставляет методы для записи сообщений разного уровня (
По умолчанию в
Для отправки логов в сконфигурированные места используются обработчики. Мы можем использовать уже существующие хэндлеры, либо создать свой класс обработчика, унаследовавшись от базового класса
#logging
Логировние является неотъемлемой частью разработки. Логи показывают информацию о текущем состоянии программы. И чем лучше выстроено логирование, тем проще будет разобраться в нестандартных ситуациях.
Python поставляется для этих целей с гибким модулем
logging
. Для создания объекта Logger
, вызываем функцию getLogger
, передавая в нее имя логера.Созданный объект Logger предоставляет методы для записи сообщений разного уровня (
DEBUG
, INFO
, WARNING
, ERROR
, CRITICAL
), что удобно для поиска нужной информации с применением фильтров.По умолчанию в
logging
задан уровень WARNING
, это означает, что сообщения уровня DEBUG
и INFO
будут игнорироваться при записи в лог. Изменить данное поведение можно с помощью метода setLevel
, передав минимальный уровень, который будет отлавливаться.Для отправки логов в сконфигурированные места используются обработчики. Мы можем использовать уже существующие хэндлеры, либо создать свой класс обработчика, унаследовавшись от базового класса
Handler
.#logging
👍4
Генерируем случайные числа
Небольшой пост для тех, кто только начинает свое обучение. Во встроенном модуле
Диапазон получаемого числа задается с помощью двух аргументов: нижняя и верхняя границы в виде целых чисел.
#random
Небольшой пост для тех, кто только начинает свое обучение. Во встроенном модуле
random
есть функция randint
, которая выдает случайные числа.Диапазон получаемого числа задается с помощью двух аргументов: нижняя и верхняя границы в виде целых чисел.
#random
👍1
Пакет со всеми алгоритмами
На днях обнаружил крутой пакет, в котором реализованы практически все алгоритмы, которые можно представить.
Список всех алгоритмов с ссылками на их исходный код можете найти здесь. Такой пакет можно использовать и на практике, и как справочник на всякий случай.
Например, можете посмотреть пример использования сортировки слиянием на картинке выше.
#algorithms
На днях обнаружил крутой пакет, в котором реализованы практически все алгоритмы, которые можно представить.
Список всех алгоритмов с ссылками на их исходный код можете найти здесь. Такой пакет можно использовать и на практике, и как справочник на всякий случай.
Например, можете посмотреть пример использования сортировки слиянием на картинке выше.
#algorithms
👍7
Эмодзи
Для вывода эмодзи в python существует несколько методов.
1. Т.к. все эмодзи по сути являются Unicode символам, то мы можем использовать коды символов из Unicode-таблицы, предварительно перед выводом заменяя в коде
2. У всех эмодзи существуют краткие CLDR имена, которые мы также можем использовать для вывода.
3. Также можно использовать модуль
#emoji
Для вывода эмодзи в python существует несколько методов.
1. Т.к. все эмодзи по сути являются Unicode символам, то мы можем использовать коды символов из Unicode-таблицы, предварительно перед выводом заменяя в коде
+
на 000
.2. У всех эмодзи существуют краткие CLDR имена, которые мы также можем использовать для вывода.
3. Также можно использовать модуль
emoji
. В функцию emojize
передается CLDR имя, пробелы в котором заменены на нижние подчеркивания и добавлены двоеточия на концах.#emoji
👍5❤1
Улучшенные отчеты об ошибках
В последнем обновлении Python 3.10 добавили более удобную и точную информацию об ошибках. Теперь выводится и природа ошибки, и ее местоположение в коде.
Для ошибок, связанных с опечатками в названиях атрибутов и имен переменных в функциях, добавили рекомендации по исправлению.
#updates
В последнем обновлении Python 3.10 добавили более удобную и точную информацию об ошибках. Теперь выводится и природа ошибки, и ее местоположение в коде.
Для ошибок, связанных с опечатками в названиях атрибутов и имен переменных в функциях, добавили рекомендации по исправлению.
#updates
👍5
Проверка истинности объекта класса
Для того, чтобы определить поведение при проверке на истинность объектов классов в python3 есть "магический" метод
Если данный метод определен в классе, то он будет вызываться при каждой проверке объекта на истинность а также с помощью функции
Если
#magic #__bool__
Для того, чтобы определить поведение при проверке на истинность объектов классов в python3 есть "магический" метод
__bool__()
, который был добавлен на замену устаревшему __nonzero__()
в python2.Если данный метод определен в классе, то он будет вызываться при каждой проверке объекта на истинность а также с помощью функции
bool()
. Метод должен возвращать False
или True
. Если
__bool__()
не определен, будет вызываться метод __len__()
, если он определен, и, соответственно, объект будет считаться истинным, если результат __len__()
не будет равен нулю. Если в классе не определены ни __len__()
, ни __bool__()
, все его экземпляры будут истинными.#magic #__bool__
👍2
Обрабатываем номера телефонов
Пакет
Основным классом, который представляет номер, является
В целом, пакет использовать достаточно просто, базовые примеры есть на картинке. Также можете посмотреть документацию для более продвинутого использования.
#phonenumbers
Пакет
phonenumbers
основан на библиотеке libphonenumber от Google, которая позволяет форматировать, парсить и проверять номера телефонов.Основным классом, который представляет номер, является
PhoneNumber
. Объект можно создать, вызвав метод parse()
и передав в аргументы номер телефона в виде строки. Вторым аргументом также можно указать страну.В целом, пакет использовать достаточно просто, базовые примеры есть на картинке. Также можете посмотреть документацию для более продвинутого использования.
#phonenumbers
👍7❤2🔥1
Обрабатываем естественный язык
TextBlob — удобный пакет для обработки текста. Он предоставляет простой API для погружения в общие задачи обработки естественного языка (NLP), такие как анализ тональности, пометку частей речи, перевод и многое другое.
Здесь особенно круто, что к объектам класса
Документация находится здесь, но некоторые примеры есть и на картинке выше. Еще важно, что несколько функций, например
#textblob
TextBlob — удобный пакет для обработки текста. Он предоставляет простой API для погружения в общие задачи обработки естественного языка (NLP), такие как анализ тональности, пометку частей речи, перевод и многое другое.
Здесь особенно круто, что к объектам класса
TextBlob
можно применять методы строк (upper
, split
, format
и т. д.) и в целом обращаться с ними как с обычными строками.Документация находится здесь, но некоторые примеры есть и на картинке выше. Еще важно, что несколько функций, например
translate()
, требуют подключения к интернету.#textblob
❤5👍3🔥1
Фронтенд и Python
Brython предназначен для замены Javascript в качестве языка сценариев для веб-страниц. Таким образом, это по сути Python 3, адаптированный к среде HTML5, то есть с интерфейсом к объектам и событиям DOM.
На картинке можете посмотреть простую HTML страницу со вставкой скрипта на Brython. Больше примеров можно найти в их галерее.
Проект интересный, но лично я бы не стал использовать его в продакшне. В любом случае можете ознакомиться с их документацией.
#brython
Brython предназначен для замены Javascript в качестве языка сценариев для веб-страниц. Таким образом, это по сути Python 3, адаптированный к среде HTML5, то есть с интерфейсом к объектам и событиям DOM.
На картинке можете посмотреть простую HTML страницу со вставкой скрипта на Brython. Больше примеров можно найти в их галерее.
Проект интересный, но лично я бы не стал использовать его в продакшне. В любом случае можете ознакомиться с их документацией.
#brython
👍3
Аргументы командой строки
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной
Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.
#sys
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной
argv
во встроенном модуле sys
.Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.
#sys
👍2
Получаем версию Python
Во пакете
Проверка версии интерпретатора может быть полезна в случае, если вы используете какие-то фичи из более новых версий языка.
#sys
Во пакете
sys
есть удобная переменная version_info
, которая хранит в себе версию Python, с помощью которого был запущен скрипт.Проверка версии интерпретатора может быть полезна в случае, если вы используете какие-то фичи из более новых версий языка.
#sys
👍5
PyAutoGUI
PyAutoGUI позволяет Python управлять мышью и клавиатурой для автоматизации взаимодействия с другими приложениями. Пакет работает в Windows, macOS и Linux на Python 2 и 3.
Из ключевого функционала можно выделить следующее:
— Передвижение курсора и нажатие на кнопки мыши;
— Набор текста, например для заполнения форм;
— Скриншоты, поиск указанных изображений на экране (например, иконки) и нажатие на них;
— Поиск приложения на экране, изменение размера его окна, перемещение по экрану и т. д.
Основные функции показаны в примере на картинке выше, остальное — в документации проекта.
#pyautogui
PyAutoGUI позволяет Python управлять мышью и клавиатурой для автоматизации взаимодействия с другими приложениями. Пакет работает в Windows, macOS и Linux на Python 2 и 3.
Из ключевого функционала можно выделить следующее:
— Передвижение курсора и нажатие на кнопки мыши;
— Набор текста, например для заполнения форм;
— Скриншоты, поиск указанных изображений на экране (например, иконки) и нажатие на них;
— Поиск приложения на экране, изменение размера его окна, перемещение по экрану и т. д.
Основные функции показаны в примере на картинке выше, остальное — в документации проекта.
#pyautogui
👍7🔥6
Цепочка исключений
Для формирования цепочек исключений используется ключевое слово
В результате, если вызванное исключение не обработано, то на вывод будут отправлены оба исключения.
#exception
Для формирования цепочек исключений используется ключевое слово
from
, после которого требуется указать ещё одно исключение. Это исключение будет подвязано к вызванному в атрибут __cause__
(поддерживает запись).В результате, если вызванное исключение не обработано, то на вывод будут отправлены оба исключения.
#exception
👍3
Официальное упорядочивание словарей
Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.
Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше.
Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки.
#словари
Кстати, Python 3.7 на официальном уровне зафиксировал соответствие порядка перебора элементов словарей порядку их добавления.
Но для некоторых это не такая уж и новость, так как и в Python 3.6 словари уже были упорядочены, что видно на примере выше.
Однако это был просто побочный результат реализации, не зафиксированный в стандарте. Новый Python оформил его официально. Теперь можно быть уверенным в сохранении порядка вставки.
#словари
👍9
Выполняем код по расписанию
Часто от программиста требуется написать код, который должен выполняться в определенный промежуток времени или по расписанию. Для решения этой проблемы существует много решений, но одно из них — это библиотека aiocron.
Она позволяет просто описать в декораторе конфигурацию расписания, согласно которому метод будет запускаться. В примере выше функция
#aiocron
Часто от программиста требуется написать код, который должен выполняться в определенный промежуток времени или по расписанию. Для решения этой проблемы существует много решений, но одно из них — это библиотека aiocron.
Она позволяет просто описать в декораторе конфигурацию расписания, согласно которому метод будет запускаться. В примере выше функция
attime
будет выполняться каджую минуту с 6 утра до 10 вечера в рабочие дни недели. Подробнее о написании своих расписаний можно почитать тут.#aiocron
👍18
Генерация случайных значений с помощью модуля secrets
Встроенный модуль
Интерфейс использования
Также в модуле есть класс
#secrets #random
Встроенный модуль
secrets
используется для генерации криптографически стойких случайных чисел, с помощью средств предоставляемых операционной системой. Что хорошо подходит при работе с паролями, токенами аутентификации.Интерфейс использования
secrets
довольно прост и схож с random
. Его основные функции:secrets.choice(collection)
- возвращает случайно выбранный элемент из переданной коллекции. secrets.randbelow(n)
- возвращает случайный int в диапазоне [0, n).secrets.randbits(n)
- возвращает целое число int состоящее из n случайных бит.secrets.token_bytes(n)
- возвращает случайную байтовую строку, содержащую n байт.token_hex(n)
- возвращает случайную строку из n байт в шестнадцатеричной формате.token_urlsafe(n)
- возвращает URL-безопасную строку, содержащая n байт, закодированную в Base64.Также в модуле есть класс
SystemRandom
, который поддерживает большинство функций определенных в random.#secrets #random
👍15🔥1