Forwarded from Python Education
Что такое logging?
Модуль logging в Python — это набор функций и классов, которые позволяют регистрировать события, происходящие во время работы кода. Этот модуль входит в стандартную библиотеку, поэтому для его использования достаточно написать лишь одну строку:
У функции basicConfig() 3 основных параметра:
• level — уровень логирования на Python;
• filename — место, куда мы направляем логи;
• format — вид, в котором мы сохраняем результат.
Модуль logging в Python — это набор функций и классов, которые позволяют регистрировать события, происходящие во время работы кода. Этот модуль входит в стандартную библиотеку, поэтому для его использования достаточно написать лишь одну строку:
import loggingОсновная функция, которая пригодится Вам для работы с этим модулем — basicConfig(). В ней Вы будете указывать все основные настройки (по крайней мере, на базовом уровне).
У функции basicConfig() 3 основных параметра:
• level — уровень логирования на Python;
• filename — место, куда мы направляем логи;
• format — вид, в котором мы сохраняем результат.
Forwarded from Python Education
pprint
Стандартная функция Python print() делает своё дело. Но если попытаться вывести какой-нибудь большой вложенный объект, результат будет выглядеть не очень приятно.
Здесь на помощь приходит модуль из стандартной библиотеки pprint (pretty print). С его помощью можно выводить объекты со сложной структурой в читабельном виде.
Мастхэв для любого Python-разработчика, работающего с нестандартными структурами данных
Стандартная функция Python print() делает своё дело. Но если попытаться вывести какой-нибудь большой вложенный объект, результат будет выглядеть не очень приятно.
Здесь на помощь приходит модуль из стандартной библиотеки pprint (pretty print). С его помощью можно выводить объекты со сложной структурой в читабельном виде.
Мастхэв для любого Python-разработчика, работающего с нестандартными структурами данных
Forwarded from Python Education
Перегрузка операторов
Когда-нибудь задумывались, почему Python позволяет использовать оператор + как для сложения чисел, так и для конкатенации строк? За этим как раз и стоит перегрузка операторов.
Вы можете определять объекты, которые используют стандартные символы операторов любым образом. Это позволяет применять их в контексте объектов, с которыми вы работаете
Когда-нибудь задумывались, почему Python позволяет использовать оператор + как для сложения чисел, так и для конкатенации строк? За этим как раз и стоит перегрузка операторов.
Вы можете определять объекты, которые используют стандартные символы операторов любым образом. Это позволяет применять их в контексте объектов, с которыми вы работаете
Forwarded from Python Education
__repr__
При определении класса или объекта полезно добавлять «официальный» способ представления объекта строкой. Это сильно упрощает отладку.
Метод __repr__() позволяет определять строковое представление, предназначенное для программиста и удобное при использовании во время отладки, а метод __str__() позволяет определять понятное пользователю строковое представление, которое можно отображать в интерфейсе программы.
При определении класса или объекта полезно добавлять «официальный» способ представления объекта строкой. Это сильно упрощает отладку.
Метод __repr__() позволяет определять строковое представление, предназначенное для программиста и удобное при использовании во время отладки, а метод __str__() позволяет определять понятное пользователю строковое представление, которое можно отображать в интерфейсе программы.
Forwarded from Python Education
Принципы программирования. Часть 1
Хорошие программисты пишут и рабочий, и качественный код. Сейчас существуют главные правила написания хорошего кода, им даже придуманы аббревиатуры. Их сейчас и разберем.
KISS
Keep It Stupid Simple - придерживайся простоты. Хороший пример этому - побитовые операции и регулярки. Это не означает, что их нельзя использовать. Но не надо использовать их там, где это не нужно. Чем проще написан код, тем легче его поддерживать вам и вашим коллегам.
DRY
Don’t Repeat Yourself - не повторяйся. Не следует дублировать код. Вместо копирования нужно создать функцию. В будущем это упростит отладку и изменение кода. Особенно в больших программах.
Хорошие программисты пишут и рабочий, и качественный код. Сейчас существуют главные правила написания хорошего кода, им даже придуманы аббревиатуры. Их сейчас и разберем.
KISS
Keep It Stupid Simple - придерживайся простоты. Хороший пример этому - побитовые операции и регулярки. Это не означает, что их нельзя использовать. Но не надо использовать их там, где это не нужно. Чем проще написан код, тем легче его поддерживать вам и вашим коллегам.
DRY
Don’t Repeat Yourself - не повторяйся. Не следует дублировать код. Вместо копирования нужно создать функцию. В будущем это упростит отладку и изменение кода. Особенно в больших программах.
🏆1
Forwarded from Python Education
sh
Python — отличный скриптовый язык. Но иногда стандартные библиотеки os и subprocess вызывают только головную боль.
Библиотека sh может стать приятной альтернативой.
Она позволяет вызывать любую программу как обычную функцию, что полезно для автоматизации различных задач исключительно с помощью Python
Библиотека sh поддерживает только платформы Linux и macOS; для работы на Windows вам придётся поискать другой инструмент.
Python — отличный скриптовый язык. Но иногда стандартные библиотеки os и subprocess вызывают только головную боль.
Библиотека sh может стать приятной альтернативой.
Она позволяет вызывать любую программу как обычную функцию, что полезно для автоматизации различных задач исключительно с помощью Python
Библиотека sh поддерживает только платформы Linux и macOS; для работы на Windows вам придётся поискать другой инструмент.
Forwarded from Python Education
Принципы программирования. Часть 2
В прошлом посте мы начали разбирать принятые принципы программирования и их аббревиатуры.
YAGNI
You Aren’t Gonna Need It - тебе это не понадобится. Неправильно создавать места только для будущего расширения кода. Неизвестно точно, какой именно понадобится функционал и возможно код будет мешать новому (речь не идет о заглушках на заказанный функционал).
SLAP
Single Level of Abstraction Principle - принцип единого уровня абстракций. Код должен оставаться поддерживаемым, особенно функции. Если функция не помещается на экран, то ее следует разбить на несколько других функций.
«Функции должны выполнять только одно действие, но выполнять его хорошо» (Роберт Мартин). В частности напоминает принцип DRY, но сильно отличается, код не обязательно должен повторяться. Но должен быть разбит на логические блоки, для большего удобства
В прошлом посте мы начали разбирать принятые принципы программирования и их аббревиатуры.
YAGNI
You Aren’t Gonna Need It - тебе это не понадобится. Неправильно создавать места только для будущего расширения кода. Неизвестно точно, какой именно понадобится функционал и возможно код будет мешать новому (речь не идет о заглушках на заказанный функционал).
SLAP
Single Level of Abstraction Principle - принцип единого уровня абстракций. Код должен оставаться поддерживаемым, особенно функции. Если функция не помещается на экран, то ее следует разбить на несколько других функций.
«Функции должны выполнять только одно действие, но выполнять его хорошо» (Роберт Мартин). В частности напоминает принцип DRY, но сильно отличается, код не обязательно должен повторяться. Но должен быть разбит на логические блоки, для большего удобства
Forwarded from Python Education
Аннотации типов
Python — динамически типизированный язык. Вам не нужно указывать тип данных при определении переменных, функций, классов и т.д.
Это позволяет ускорить процесс разработки. Однако мало что раздражает так сильно, как ошибка времени выполнения, возникшая из-за простого несовпадения типа.
С версии Python 3.5 при определении функции можно добавлять аннотации типов
Можно даже определять псевдонимы типов
Хотя их использование опционально, с помощью аннотаций типов код можно сделать более понятным.
Также они позволяют использовать инструменты для проверки типов, чтобы отлавливать ошибки TypeError.
Python — динамически типизированный язык. Вам не нужно указывать тип данных при определении переменных, функций, классов и т.д.
Это позволяет ускорить процесс разработки. Однако мало что раздражает так сильно, как ошибка времени выполнения, возникшая из-за простого несовпадения типа.
С версии Python 3.5 при определении функции можно добавлять аннотации типов
Можно даже определять псевдонимы типов
Хотя их использование опционально, с помощью аннотаций типов код можно сделать более понятным.
Также они позволяют использовать инструменты для проверки типов, чтобы отлавливать ошибки TypeError.
Forwarded from Python Education
Принципы программирования. Часть 3
Продолжаем разбор принципов программирования
SRP
Single Responsibility Principle - принцип единого уровня ответственности. Похож на SLAP, но больше касается ООП. Каждый объект должен выполнять свою функцию. Нужен новый функционал? Значит надо создать новый объект. Очень просто об этом говорить в небольших проектах, но чем сложнее проект, тем труднее его разбить на отдельные и независимые блоки кода.
OCP
Open-Closed Principle - принцип открытости к расширению. Говорит о том, что код должен расширяться без переписывания и изменения старого. На первый взгляд кажется, что конфликтует с YAGNI, но это не так. YAGNI говорит, что нельзя писать код, который не используется сейчас. OCP затрагивает более глубокие архитектурные вещи.
Продолжаем разбор принципов программирования
SRP
Single Responsibility Principle - принцип единого уровня ответственности. Похож на SLAP, но больше касается ООП. Каждый объект должен выполнять свою функцию. Нужен новый функционал? Значит надо создать новый объект. Очень просто об этом говорить в небольших проектах, но чем сложнее проект, тем труднее его разбить на отдельные и независимые блоки кода.
OCP
Open-Closed Principle - принцип открытости к расширению. Говорит о том, что код должен расширяться без переписывания и изменения старого. На первый взгляд кажется, что конфликтует с YAGNI, но это не так. YAGNI говорит, что нельзя писать код, который не используется сейчас. OCP затрагивает более глубокие архитектурные вещи.
Forwarded from Python Education
uuid
Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier, глобально уникальный идентификатор).
Так мы создаём случайное 128-битное число, которое почти наверняка будет уникальным.
Существует более 2¹²² возможных UUID. Это более 5 ундециллионов или 5,000,000,000,000,000,000,000,000,000,000,000,000.
Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.
Вполне недурно для двух строк кода.
Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier, глобально уникальный идентификатор).
Так мы создаём случайное 128-битное число, которое почти наверняка будет уникальным.
Существует более 2¹²² возможных UUID. Это более 5 ундециллионов или 5,000,000,000,000,000,000,000,000,000,000,000,000.
Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.
Вполне недурно для двух строк кода.
Forwarded from Python Education
Принципы программирования. Часть 4
Продолжаем разбор принципов программирования.
LSP
Liskov Substitution Principle - принцип подстановки. Назван в честь своего автора Барбары Лискова. Касается объектно-ориентированного подхода, наследуемый объект должен не заменять базовый, а дополнять его. Звучит логично, ведь если мы сделаем, чтобы машина летала, то это уже больше самолет. И соответственно проще взять базовый объект самолета, но новички часто не знают как правильно применить данное правило
ISP
Interface Segregation Principle - принцип разделения интерфейса. Как следует из перевода касается интерфейсов. Python это затрагивает не так сильно из-за его утиной типизации и простого написания аннотаций. Тем не менее, знание этого принципа в любом случае способствует улучшению кода. Правильная организация кода способствует большему расширению и оптимизации, правило больше об оформлении, чем об работе с самим интерфейсом
Продолжаем разбор принципов программирования.
LSP
Liskov Substitution Principle - принцип подстановки. Назван в честь своего автора Барбары Лискова. Касается объектно-ориентированного подхода, наследуемый объект должен не заменять базовый, а дополнять его. Звучит логично, ведь если мы сделаем, чтобы машина летала, то это уже больше самолет. И соответственно проще взять базовый объект самолета, но новички часто не знают как правильно применить данное правило
ISP
Interface Segregation Principle - принцип разделения интерфейса. Как следует из перевода касается интерфейсов. Python это затрагивает не так сильно из-за его утиной типизации и простого написания аннотаций. Тем не менее, знание этого принципа в любом случае способствует улучшению кода. Правильная организация кода способствует большему расширению и оптимизации, правило больше об оформлении, чем об работе с самим интерфейсом
Forwarded from Python Education
Explicit Conversion Flag
Флаг явного преобразования используется для преобразования значения поля
Это поле можно использовать для переопределения поведения
Флаг явного преобразования используется для преобразования значения поля
format перед его непосредственным форматированием.Это поле можно использовать для переопределения поведения
format для какого либо конкретного типа и форматирования значения. В настоящее время распространены два явных флага преобразования:!r – преобразует значение в строку, используя функцию repr()
!s – преобразует значение в строку, используя функцию str()
В примере, в случае с флагом !r строка 'Hello' будет напечатана с кавычками в поле шириной не менее 20 символов, а в случае с флагом !s – без кавычек (в более удобном для чтения виде).Forwarded from Python Education
xkcd
Юмор — ключевая особенность Python. В конце концов, язык был назван в честь британского комедийного шоу «Летающий цирк Монти Пайтона». Во многих местах официальной документации можно найти отсылки к самым известным эпизодам шоу.
Конечно, чувство юмора не заканчивается на документации. Попробуйте ввести следующую строку:
Юмор — ключевая особенность Python. В конце концов, язык был назван в честь британского комедийного шоу «Летающий цирк Монти Пайтона». Во многих местах официальной документации можно найти отсылки к самым известным эпизодам шоу.
Конечно, чувство юмора не заканчивается на документации. Попробуйте ввести следующую строку:
$ import antigravityОставайся собой, Python. Оставайся собой.
Forwarded from Python Education
Что такое PEP8?
Этот вопрос очень часто встречается на собеседовании. Поэтому обязательно стоит ознакомиться.
Оформлять код на Python можно множеством разных способов. Имя переменной может быть и Variable и VARIABLE и variable. А как правильно? Есть ли для этого стандарт?
Да есть и не один. Вы можете ввести свои стандарты оформления кода для ваших проектов на свое усмотрение.
PEP8 - стандарт оформления кода от команды Python. Содержит полное описание форматирования конструкций, имен переменных и общей компоновки кода.
Подробнее
Этот вопрос очень часто встречается на собеседовании. Поэтому обязательно стоит ознакомиться.
Оформлять код на Python можно множеством разных способов. Имя переменной может быть и Variable и VARIABLE и variable. А как правильно? Есть ли для этого стандарт?
Да есть и не один. Вы можете ввести свои стандарты оформления кода для ваших проектов на свое усмотрение.
PEP8 - стандарт оформления кода от команды Python. Содержит полное описание форматирования конструкций, имен переменных и общей компоновки кода.
Подробнее
Forwarded from Python Education
YAML
YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.
В отличие от JSON, YAML может хранить более сложные объекты и ссылаться на собственные элементы. Также там можно писать комментарии, что делает YAML подходящим для конфигурационных файлов.
Модуль PyYAML позволяет использовать YAML в Python. Установить можно так:
YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.
В отличие от JSON, YAML может хранить более сложные объекты и ссылаться на собственные элементы. Также там можно писать комментарии, что делает YAML подходящим для конфигурационных файлов.
Модуль PyYAML позволяет использовать YAML в Python. Установить можно так:
$ pip install pyyamlА затем импортировать:
import yamlPyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.
Forwarded from Python Education
zip
Когда-нибудь возникала необходимость создать словарь из двух списков?
Встроенная функция zip() принимает несколько итерируемых объектов и возвращает последовательность кортежей. Каждый кортеж группирует элементы объектов по их индексу.
Можно провести операцию, обратную zip(), с помощью zip(*).
Когда-нибудь возникала необходимость создать словарь из двух списков?
Встроенная функция zip() принимает несколько итерируемых объектов и возвращает последовательность кортежей. Каждый кортеж группирует элементы объектов по их индексу.
Можно провести операцию, обратную zip(), с помощью zip(*).
Forwarded from Python Education
Многоточие в Python
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали
В примере валидный код Python, и выглядит он теперь не так уж плохо.
Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python
Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали
В примере валидный код Python, и выглядит он теперь не так уж плохо.
Forwarded from Python Education
Colorama
Colorama помогает добавить цвета в терминал
Этот пакет отлично украшает Python-скрипты. Документация проста и понятна, почитать ее можно на странице Colorama в PyPI.
Если хотите, чтобы Colorama работала под Windows, то вначале вызовите colorama.init().
Colorama помогает добавить цвета в терминал
Этот пакет отлично украшает Python-скрипты. Документация проста и понятна, почитать ее можно на странице Colorama в PyPI.
Если хотите, чтобы Colorama работала под Windows, то вначале вызовите colorama.init().
Forwarded from Python Education
Requests
Requests основан на самой часто скачиваемой Python-библиотеке — urllib3. Requests максимально упрощает веб-запросы, оставаясь при этом чрезвычайно мощным и разноплановым инструментом. Скорее всего, вы уже знакомы с этим пакетом, но без него мой список был бы неполным.
Страница PyPI
Документация
Requests основан на самой часто скачиваемой Python-библиотеке — urllib3. Requests максимально упрощает веб-запросы, оставаясь при этом чрезвычайно мощным и разноплановым инструментом. Скорее всего, вы уже знакомы с этим пакетом, но без него мой список был бы неполным.
Страница PyPI
Документация
Forwarded from Python Education
Анонимные функции
Иногда именованию функции не стоит уделять особого внимания. Например, если вы уверены, что она будет использована только раз. Для таких случаев Python предлагает применять анонимные функции, также называемые лямбда-функциями.
Лямбда-функция может быть назначена переменной, создавая краткий способ определения функции
Это становится более интересным, когда необходимо использовать функцию в качестве аргумента. В таких случаях она часто используется только один раз. Как известно, map применяет функцию ко всем элементам итерируемого объекта. Мы можем использовать лямбду при вызове map. В данной ситуации использование map() в сочетании с лямбда-функцией является кратким и эффективным.
Иногда именованию функции не стоит уделять особого внимания. Например, если вы уверены, что она будет использована только раз. Для таких случаев Python предлагает применять анонимные функции, также называемые лямбда-функциями.
Лямбда-функция может быть назначена переменной, создавая краткий способ определения функции
Это становится более интересным, когда необходимо использовать функцию в качестве аргумента. В таких случаях она часто используется только один раз. Как известно, map применяет функцию ко всем элементам итерируемого объекта. Мы можем использовать лямбду при вызове map. В данной ситуации использование map() в сочетании с лямбда-функцией является кратким и эффективным.
Forwarded from Python Education
Chardet
Модуль Chardet используется для определения кодировки файла или потока данных. Этот пакет очень выручает при анализе больших полотен разного текста. Также Chardet пригодится при работе с удаленно скачанными данными в неизвестной вам кодировке.
После установки Chardet у вас появится дополнительный инструмент командной строки под названием chardetect.
Конечно же, никто не запрещает работать с библиотекой классическим (программным) способом. Подробнее см. документацию.
Модуль Chardet используется для определения кодировки файла или потока данных. Этот пакет очень выручает при анализе больших полотен разного текста. Также Chardet пригодится при работе с удаленно скачанными данными в неизвестной вам кодировке.
После установки Chardet у вас появится дополнительный инструмент командной строки под названием chardetect.
Конечно же, никто не запрещает работать с библиотекой классическим (программным) способом. Подробнее см. документацию.