Деструкторы
При уничтожении экземпляра класса в большинстве языков вызывается специальный метод, который называется деструктор.
В Python деструктор можно переопределять с помощью магического метода
Вообще деструкторы крайне редко переопределяется в Python, но полезно знать, что именно эти методы отвечают за очистку при удалении объекта.
#классы
При уничтожении экземпляра класса в большинстве языков вызывается специальный метод, который называется деструктор.
В Python деструктор можно переопределять с помощью магического метода
__del__
, который вызовется автоматически при удалении объекта.Вообще деструкторы крайне редко переопределяется в Python, но полезно знать, что именно эти методы отвечают за очистку при удалении объекта.
#классы
👍3
Генерируем фейковые данные
Faker — это легкий пакет, позволяющий создавать фейковые данные, которые могут быть полезны в качестве заглушек.
Например, методы
Еще есть метод
Вообще методов в пакете много, продемонстрировать все в одном посте нереально, поэтому можете почитать больше в документации.
Плюс здесь еще в том, что данные можно локализировать под свой язык. Для примера мы поставили русский.
#faker
Faker — это легкий пакет, позволяющий создавать фейковые данные, которые могут быть полезны в качестве заглушек.
Например, методы
name()
, addres()
, email()
и job()
создадут для вас случайные имена, адреса, почты и названия работ. Еще есть метод
text()
, который генерирует случайный текст, но, как видите в примере, результат получается неосмысленный. Вообще методов в пакете много, продемонстрировать все в одном посте нереально, поэтому можете почитать больше в документации.
Плюс здесь еще в том, что данные можно локализировать под свой язык. Для примера мы поставили русский.
#faker
👍2
Получаем атрибуты объекта
Функция
Проще говоря,
А если ничего не передать в аргументы, то функция вернет словарь локальных переменных, как и
#переменные
Функция
vars()
возвращает все атрибуты переданного параметра, в качестве которого может быть почти что угодно: модуль, класс, экземпляр и т. д.Проще говоря,
vars()
возвращает словарь, который хранится в атрибуте __dict__
у переданного объекта.А если ничего не передать в аргументы, то функция вернет словарь локальных переменных, как и
locals()
(про это был пост, кстати).#переменные
👍2
Получение списка имен в объектах
С помощью функции
Для того, чтобы вручную определить для класса выдачу информации по атрибутам для функции
Для классов, в которых не определен
Данную функцию удобно использовать в интерактивном режиме для поиска нужного атрибута, применяя функцию
#dir
С помощью функции
dir()
можно получить отсортированный список имен атрибутов и методов, доступных в локальной области. Либо если в функцию передать какой-либо объект dir(object)
, она вернет список всех имен атрибутов и методов переданного объекта.Для того, чтобы вручную определить для класса выдачу информации по атрибутам для функции
dir()
, можно определить в классе метод __dir__()
.Для классов, в которых не определен
__dir__()
, функция соберет информацию по атрибутам из __dict__
.Данную функцию удобно использовать в интерактивном режиме для поиска нужного атрибута, применяя функцию
help()
по нужному атрибуту для получения документации.#dir
👍1
Генерация капчи
Сегодня покажем создание простейшей капчи. Для этого нам понадобится модуль
Все максимально просто, за нас по сути все делает уже написанный в модуле код. Создаем объект изображения
#captcha
Сегодня покажем создание простейшей капчи. Для этого нам понадобится модуль
captcha
и Pillow
, который используется для создание изображений в captcha
.Все максимально просто, за нас по сути все делает уже написанный в модуле код. Создаем объект изображения
ImageCaptcha
, на который будет нанесен текст. После чего вызываем метод write
с заданным текстом и именем файла, в который будет записано изображение.#captcha
👍5
Получаем исходный код объекта
Встроенный модуль
Сегодня поговорим только про
В аргументы достаточно передать необходимый объект. Но важно отметить, что встроенные функции не получится проинспектировать.
#inspect
Встроенный модуль
inspect
помогает разработчикам исследовать уже написанные программы.Сегодня поговорим только про
getsource()
, который возвращает весь исходный код функции, класса или модуля в виде строки.В аргументы достаточно передать необходимый объект. Но важно отметить, что встроенные функции не получится проинспектировать.
#inspect
👍7
Проверяем тип объекта
Раз уж в предыдущем посте затронули модуль
Функции
#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