Получаем атрибуты объекта
Функция
Проще говоря,
А если ничего не передать в аргументы, то функция вернет словарь локальных переменных, как и
#переменные
Функция
vars()
возвращает все атрибуты переданного параметра, в качестве которого может быть почти что угодно: модуль, класс, экземпляр и т. д.Проще говоря,
vars()
возвращает словарь, который хранится в атрибуте __dict__
у переданного объекта.А если ничего не передать в аргументы, то функция вернет словарь локальных переменных, как и
locals()
(про это был пост, кстати).#переменные
Получение списка имен в объектах
С помощью функции
Для того, чтобы вручную определить для класса выдачу информации по атрибутам для функции
Для классов, в которых не определен
Данную функцию удобно использовать в интерактивном режиме для поиска нужного атрибута, применяя функцию
#dir
С помощью функции
dir()
можно получить отсортированный список имен атрибутов и методов, доступных в локальной области. Либо если в функцию передать какой-либо объект dir(object)
, она вернет список всех имен атрибутов и методов переданного объекта.Для того, чтобы вручную определить для класса выдачу информации по атрибутам для функции
dir()
, можно определить в классе метод __dir__()
.Для классов, в которых не определен
__dir__()
, функция соберет информацию по атрибутам из __dict__
.Данную функцию удобно использовать в интерактивном режиме для поиска нужного атрибута, применяя функцию
help()
по нужному атрибуту для получения документации.#dir
Генерация капчи
Сегодня покажем создание простейшей капчи. Для этого нам понадобится модуль
Все максимально просто, за нас по сути все делает уже написанный в модуле код. Создаем объект изображения
#captcha
Сегодня покажем создание простейшей капчи. Для этого нам понадобится модуль
captcha
и Pillow
, который используется для создание изображений в captcha
.Все максимально просто, за нас по сути все делает уже написанный в модуле код. Создаем объект изображения
ImageCaptcha
, на который будет нанесен текст. После чего вызываем метод write
с заданным текстом и именем файла, в который будет записано изображение.#captcha
Получаем исходный код объекта
Встроенный модуль
Сегодня поговорим только про
В аргументы достаточно передать необходимый объект. Но важно отметить, что встроенные функции не получится проинспектировать.
#inspect
Встроенный модуль
inspect
помогает разработчикам исследовать уже написанные программы.Сегодня поговорим только про
getsource()
, который возвращает весь исходный код функции, класса или модуля в виде строки.В аргументы достаточно передать необходимый объект. Но важно отметить, что встроенные функции не получится проинспектировать.
#inspect
Проверяем тип объекта
Раз уж в предыдущем посте затронули модуль
Функции
#inspect
Раз уж в предыдущем посте затронули модуль
inspect
, то давайте еще поговорим про некоторые его возможности.Функции
ismodule()
, isclass()
, ismethod()
и isfunction()
проверяют переданный объект на то, является ли он модулем, классом, методом или функцией соответственно.#inspect
Трюк с f-строками
Думаю, про f-строки как метод форматирования все уже знают. Напоминаю, что появились они еще в Python 3.6.
Но им добавили еще одну классную фичу в обновлении 3.8 — можно выводить имя переменной и сразу ее значение, добавив знак равно как показано на картинке.
#строки
Думаю, про f-строки как метод форматирования все уже знают. Напоминаю, что появились они еще в Python 3.6.
Но им добавили еще одну классную фичу в обновлении 3.8 — можно выводить имя переменной и сразу ее значение, добавив знак равно как показано на картинке.
#строки
Изменение в контекстных менеджерах
Как вы знаете, для удобного управления жизненным циклом ресурсов в 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
Яндекс проведет 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.
Логирование
Логировние является неотъемлемой частью разработки. Логи показывают информацию о текущем состоянии программы. И чем лучше выстроено логирование, тем проще будет разобраться в нестандартных ситуациях.
Python поставляется для этих целей с гибким модулем
Созданный объект Logger предоставляет методы для записи сообщений разного уровня (
По умолчанию в
Для отправки логов в сконфигурированные места используются обработчики. Мы можем использовать уже существующие хэндлеры, либо создать свой класс обработчика, унаследовавшись от базового класса
#logging
Логировние является неотъемлемой частью разработки. Логи показывают информацию о текущем состоянии программы. И чем лучше выстроено логирование, тем проще будет разобраться в нестандартных ситуациях.
Python поставляется для этих целей с гибким модулем
logging
. Для создания объекта Logger
, вызываем функцию getLogger
, передавая в нее имя логера.Созданный объект Logger предоставляет методы для записи сообщений разного уровня (
DEBUG
, INFO
, WARNING
, ERROR
, CRITICAL
), что удобно для поиска нужной информации с применением фильтров.По умолчанию в
logging
задан уровень WARNING
, это означает, что сообщения уровня DEBUG
и INFO
будут игнорироваться при записи в лог. Изменить данное поведение можно с помощью метода setLevel
, передав минимальный уровень, который будет отлавливаться.Для отправки логов в сконфигурированные места используются обработчики. Мы можем использовать уже существующие хэндлеры, либо создать свой класс обработчика, унаследовавшись от базового класса
Handler
.#logging
Генерируем случайные числа
Небольшой пост для тех, кто только начинает свое обучение. Во встроенном модуле
Диапазон получаемого числа задается с помощью двух аргументов: нижняя и верхняя границы в виде целых чисел.
#random
Небольшой пост для тех, кто только начинает свое обучение. Во встроенном модуле
random
есть функция randint
, которая выдает случайные числа.Диапазон получаемого числа задается с помощью двух аргументов: нижняя и верхняя границы в виде целых чисел.
#random
Пакет со всеми алгоритмами
На днях обнаружил крутой пакет, в котором реализованы практически все алгоритмы, которые можно представить.
Список всех алгоритмов с ссылками на их исходный код можете найти здесь. Такой пакет можно использовать и на практике, и как справочник на всякий случай.
Например, можете посмотреть пример использования сортировки слиянием на картинке выше.
#algorithms
На днях обнаружил крутой пакет, в котором реализованы практически все алгоритмы, которые можно представить.
Список всех алгоритмов с ссылками на их исходный код можете найти здесь. Такой пакет можно использовать и на практике, и как справочник на всякий случай.
Например, можете посмотреть пример использования сортировки слиянием на картинке выше.
#algorithms
Эмодзи
Для вывода эмодзи в python существует несколько методов.
1. Т.к. все эмодзи по сути являются Unicode символам, то мы можем использовать коды символов из Unicode-таблицы, предварительно перед выводом заменяя в коде
2. У всех эмодзи существуют краткие CLDR имена, которые мы также можем использовать для вывода.
3. Также можно использовать модуль
#emoji
Для вывода эмодзи в python существует несколько методов.
1. Т.к. все эмодзи по сути являются Unicode символам, то мы можем использовать коды символов из Unicode-таблицы, предварительно перед выводом заменяя в коде
+
на 000
.2. У всех эмодзи существуют краткие CLDR имена, которые мы также можем использовать для вывода.
3. Также можно использовать модуль
emoji
. В функцию emojize
передается CLDR имя, пробелы в котором заменены на нижние подчеркивания и добавлены двоеточия на концах.#emoji
Улучшенные отчеты об ошибках
В последнем обновлении Python 3.10 добавили более удобную и точную информацию об ошибках. Теперь выводится и природа ошибки, и ее местоположение в коде.
Для ошибок, связанных с опечатками в названиях атрибутов и имен переменных в функциях, добавили рекомендации по исправлению.
#updates
В последнем обновлении Python 3.10 добавили более удобную и точную информацию об ошибках. Теперь выводится и природа ошибки, и ее местоположение в коде.
Для ошибок, связанных с опечатками в названиях атрибутов и имен переменных в функциях, добавили рекомендации по исправлению.
#updates
Проверка истинности объекта класса
Для того, чтобы определить поведение при проверке на истинность объектов классов в python3 есть "магический" метод
Если данный метод определен в классе, то он будет вызываться при каждой проверке объекта на истинность а также с помощью функции
Если
#magic #__bool__
Для того, чтобы определить поведение при проверке на истинность объектов классов в python3 есть "магический" метод
__bool__()
, который был добавлен на замену устаревшему __nonzero__()
в python2.Если данный метод определен в классе, то он будет вызываться при каждой проверке объекта на истинность а также с помощью функции
bool()
. Метод должен возвращать False
или True
. Если
__bool__()
не определен, будет вызываться метод __len__()
, если он определен, и, соответственно, объект будет считаться истинным, если результат __len__()
не будет равен нулю. Если в классе не определены ни __len__()
, ни __bool__()
, все его экземпляры будут истинными.#magic #__bool__
Обрабатываем номера телефонов
Пакет
Основным классом, который представляет номер, является
В целом, пакет использовать достаточно просто, базовые примеры есть на картинке. Также можете посмотреть документацию для более продвинутого использования.
#phonenumbers
Пакет
phonenumbers
основан на библиотеке libphonenumber от Google, которая позволяет форматировать, парсить и проверять номера телефонов.Основным классом, который представляет номер, является
PhoneNumber
. Объект можно создать, вызвав метод parse()
и передав в аргументы номер телефона в виде строки. Вторым аргументом также можно указать страну.В целом, пакет использовать достаточно просто, базовые примеры есть на картинке. Также можете посмотреть документацию для более продвинутого использования.
#phonenumbers
Обрабатываем естественный язык
TextBlob — удобный пакет для обработки текста. Он предоставляет простой API для погружения в общие задачи обработки естественного языка (NLP), такие как анализ тональности, пометку частей речи, перевод и многое другое.
Здесь особенно круто, что к объектам класса
Документация находится здесь, но некоторые примеры есть и на картинке выше. Еще важно, что несколько функций, например
#textblob
TextBlob — удобный пакет для обработки текста. Он предоставляет простой API для погружения в общие задачи обработки естественного языка (NLP), такие как анализ тональности, пометку частей речи, перевод и многое другое.
Здесь особенно круто, что к объектам класса
TextBlob
можно применять методы строк (upper
, split
, format
и т. д.) и в целом обращаться с ними как с обычными строками.Документация находится здесь, но некоторые примеры есть и на картинке выше. Еще важно, что несколько функций, например
translate()
, требуют подключения к интернету.#textblob
Фронтенд и Python
Brython предназначен для замены Javascript в качестве языка сценариев для веб-страниц. Таким образом, это по сути Python 3, адаптированный к среде HTML5, то есть с интерфейсом к объектам и событиям DOM.
На картинке можете посмотреть простую HTML страницу со вставкой скрипта на Brython. Больше примеров можно найти в их галерее.
Проект интересный, но лично я бы не стал использовать его в продакшне. В любом случае можете ознакомиться с их документацией.
#brython
Brython предназначен для замены Javascript в качестве языка сценариев для веб-страниц. Таким образом, это по сути Python 3, адаптированный к среде HTML5, то есть с интерфейсом к объектам и событиям DOM.
На картинке можете посмотреть простую HTML страницу со вставкой скрипта на Brython. Больше примеров можно найти в их галерее.
Проект интересный, но лично я бы не стал использовать его в продакшне. В любом случае можете ознакомиться с их документацией.
#brython
Аргументы командой строки
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной
Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.
#sys
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной
argv
во встроенном модуле sys
.Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.
#sys
Получаем версию Python
Во пакете
Проверка версии интерпретатора может быть полезна в случае, если вы используете какие-то фичи из более новых версий языка.
#sys
Во пакете
sys
есть удобная переменная version_info
, которая хранит в себе версию Python, с помощью которого был запущен скрипт.Проверка версии интерпретатора может быть полезна в случае, если вы используете какие-то фичи из более новых версий языка.
#sys
PyAutoGUI
PyAutoGUI позволяет Python управлять мышью и клавиатурой для автоматизации взаимодействия с другими приложениями. Пакет работает в Windows, macOS и Linux на Python 2 и 3.
Из ключевого функционала можно выделить следующее:
— Передвижение курсора и нажатие на кнопки мыши;
— Набор текста, например для заполнения форм;
— Скриншоты, поиск указанных изображений на экране (например, иконки) и нажатие на них;
— Поиск приложения на экране, изменение размера его окна, перемещение по экрану и т. д.
Основные функции показаны в примере на картинке выше, остальное — в документации проекта.
#pyautogui
PyAutoGUI позволяет Python управлять мышью и клавиатурой для автоматизации взаимодействия с другими приложениями. Пакет работает в Windows, macOS и Linux на Python 2 и 3.
Из ключевого функционала можно выделить следующее:
— Передвижение курсора и нажатие на кнопки мыши;
— Набор текста, например для заполнения форм;
— Скриншоты, поиск указанных изображений на экране (например, иконки) и нажатие на них;
— Поиск приложения на экране, изменение размера его окна, перемещение по экрану и т. д.
Основные функции показаны в примере на картинке выше, остальное — в документации проекта.
#pyautogui