Python академия
7.71K subscribers
2.3K photos
5 videos
267 links
Python академия. Учи Python быстро и легко. По всем вопросам @evgenycarter
Download Telegram
Флаги явного преобразования

Флаг явного преобразования (Explicit Conversion Flag) используется для преобразования значения поля format перед его непосредственным форматированием.

Это поле можно использовать для переопределения поведения format для какого либо конкретного типа и форматирования значения. В настоящее время распространены два явных флага преобразования:

!r — преобразует значение в строку, используя функцию repr().
!s — преобразует значение в строку, используя функцию str().

В примере, в случае с флагом !r строка 'Hello' будет напечатана с кавычками в поле шириной не менее 20 символов, а в случае с флагом !s — без кавычек (в более удобном для чтения виде).

Подписывайтесь на канал 👉@pythonofff
👍5
Что происходит, когда у нас есть избыточные ключи в ChainMap?

Возможно, что 2 словаря содержат один и тот же ключ.

Обратите внимание, что red не повторяется, он печатается только один раз.

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

При выводе вложенных словарей и списков с помощью обычного print() мы получаем всё в одну строчку и в неразборчивом виде.

Но в стандартной библиотеке есть модуль pprint, который поможет вывести подобное дело в красивом формате — достаточно в коде заменить print() на pprint.pprint().

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

Подписывайтесь на канал 👉@pythonofff
👍5
Как использовать функцию pow() в Python

Python также имеет встроенную функцию pow(), которая возводит число в указанную степень. Синтаксис данной функции выглядит следующим образом:

pow(base, exponent)

Приведенный выше код интерпретируется как baseexponent, то есть число base в степени exponent.

Функция pow() принимает два аргумента: число (известное как основание или base) и степень, в которую число должно быть возведено (показатель степени — exponent).

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

Пакет Numerizer преобразует обычный текст в числа. То есть, например, из строки "forty two" можно получить число "42".

Кроме функции numerize особо выделить нечего, но можете посмотреть https://github.com/jaidevd/numerizer

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

PurePath().is_absolute() проверяет, является ли ваш путь абсолютным

Обратите внимание, что абсолютный путь состоит из корня и имени диска. В этом случае PurePath() не позволяет нам узнать имя диска.

Если вы используете PureWindowsPath(), вы можете представить абсолютный путь, содержащий имя диска, например PureWindowsPath('c:/Program Files').

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

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

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

Вообще деструкторы крайне редко переопределяется в Python, но полезно знать, что именно эти методы отвечают за очистку при удалении объекта.

Подписывайтесь на канал 👉@pythonofff
👍2
PurePath().is_relative()

В этом примере указанный путь /src является частью или принадлежит пути p, в то время как другой указанный путь — /data — вызывает значение False, поскольку он не имеет никакого отношения к пути p.

Подписывайтесь на канал 👉@pythonofff
👍7
Получаем атрибуты объекта

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

Проще говоря, vars() возвращает словарь, который хранится в атрибуте __dict__ у переданного объекта.

А если ничего не передать в аргументы, то функция вернет словарь локальных переменных, как и locals()

Подписывайтесь на канал 👉@pythonofff
👍4
Как использовать Concrete Paths

Path() является дочерним классом PurePath(). Он обеспечивает операции обработки с возможностью выполнения операций записи.

Когда вы создаете экземпляр Path(), он создает два класса для обработки путей Windows и путей, отличных от Windows. Как и PurePath(), Path() также создает общий объект пути «agnostic path», независимо от операционной системы, в которой вы работаете.

Подписывайтесь на канал 👉@pythonofff
🔥2👍1
Получение списка имен в объектах

С помощью функции dir() можно получить отсортированный список имен атрибутов и методов, доступных в локальной области. Либо если в функцию передать какой-либо объект dir(object), она вернет список всех имен атрибутов и методов переданного объекта.

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

Для классов, в которых не определен __dir__(), функция соберет информацию по атрибутам из __dict__.

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

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

Это дочерний класс Path() и PurePosixPath(), реализованный для обработки и управления путями файловой системы, отличной от Windows.

Вы получите сообщение об ошибке, если создадите экземпляр PosixPath() на компьютере с Windows, потому что нельзя выполнять системные вызовы, работая в другой операционной системе.

Подписывайтесь на канал 👉@pythonofff
🔥2👍1
Генерация капчи

Сегодня покажем создание простейшей капчи. Для этого нам понадобится модуль captcha и Pillow, который используется для создание изображений в captcha.

Все максимально просто, за нас по сути все делает уже написанный в модуле код. Создаем объект изображения ImageCaptcha, на который будет нанесен текст. После чего вызываем метод write с заданным текстом и именем файла, в который будет записано изображение.

Подписывайтесь на канал 👉@pythonofff
🔥5👍2
WindowsPath()

Это дочерний класс Path() и PureWindowsPath(), реализованный для путей файловой системы Windows.

Создание WindowsPath(), если вы работаете в другой операционной системе, тоже вызовет ошибку.

Подписывайтесь на канал 👉@pythonofff
🔥3
Получаем исходный код объекта

Встроенный модуль inspect помогает разработчикам исследовать уже написанные программы.

Сегодня поговорим только про getsource(), который возвращает весь исходный код функции, класса или модуля в виде строки.

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

Подписывайтесь на канал 👉@pythonofff
👍7🔥2
Свойства Concrete Paths

Поскольку Concrete Paths является подклассом PurePath, мы можем использовать все свойства PurePath().

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

Подписывайтесь на канал 👉@pythonofff
👍3🔥1
Проверяем тип объекта

Раз уж в предыдущем посте затронули модуль inspect, то давайте еще поговорим про некоторые его возможности.

Функции ismodule(), isclass(), ismethod() и isfunction() проверяют переданный объект на то, является ли он модулем, классом, методом или функцией соответственно.

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

Каждый подкласс Path() предоставляет следующие методы для обработки путей и выполнения системных вызовов:

Path().itertir() возвращает содержимое каталога.

Подписывайтесь на канал 👉@pythonofff
👍2🔥2😐1
Трюк с f-строками

Думаю, про f-строки как метод форматирования все уже знают. Напоминаю, что появились они еще в Python 3.6.

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

Подписывайтесь на канал 👉@pythonofff
👍13🔥2
Path().mkdir()

Согласно официальной документации, метод .mkdir() принимает три аргумента. Мы пока сосредоточимся только на parents и exists_ok.

Оба аргумента имеют значение False по умолчанию. Аргумент parents вызывает ошибку FileNotFound в случае отсутствия родителя, тогда как exists_ok вызывает ошибку FileExists, если данный каталог уже существует.

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