Программы для программирования
20 subscribers
849 photos
1 video
26 files
41 links
Download Telegram
Forwarded from Python Education
Well Formed JSON

JSON должен быть well formed, то есть синтаксически правильный.

Правила well formed JSON:

• Данные написаны в виде пар «ключ:значение»
• Данные разделены запятыми
• Объект находится внутри фигурных скобок { }
• Массив — внутри квадратных [ ]

Чтобы проверить JSON на синтаксис, можно использовать любой JSON Validator. Я использую JSON Formatter, он не только проверяет корректность синтаксиса, но и форматирует JSON в читабельный визуальный формат!

#JSON
Forwarded from Python Education
inspect

Модуль inspect пригодится для понимания того, что происходит за кулисами в Python. Вы даже можете вызывать его методы на них самих!

Ниже используется метод inspect.getsource() для вывода его собственного исходного кода. Также используется метод inspect.getmodule() для вывода модуля, в котором его определили.

Последняя команда выводит номер строки, на которой она сама находится

Конечно, кроме таких банальных применений этот модуль может оказаться полезным для понимания того, что делает ваш код. Также вы можете использовать его, чтобы писать самодокументированный код.
Forwarded from Python Education
Итого по #JSON

JSON (JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript, но может использоваться в любом языке программирования. Легко читается человеком и машиной. Часто используется в REST API (чаще, чем XML из-за лучшей читабельности и меньшего веса).

Корректные значения JSON:

• JSON-объект — неупорядоченное множество пар «ключ:значение», заключённое в фигурные скобки { };
• массив — упорядоченный набор значений, разделённых запятыми. Находится внутри квадратных скобок [ ];
• число (целое или вещественное);
• литералы true (логическое значение «истина»), false (логическое значение «ложь») и null;
• строка.
Forwarded from Python Education
**kwargs

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

Две звёздочки впереди объекта словаря дают возможность передавать в функцию содержимое этого словаря как именованные аргументы.

Ключи словаря — это имена аргументов, а значения передаются в функцию. Вам даже не обязательно называть его kwargs

Это полезно в тех случаях, когда ваши функции должны обрабатывать именованные аргументы, не определённые заранее.
Forwarded from Python Education
Jedi

Библиотека Jedi предназначена для автодополнения и анализа кода. Она ускоряет процесс написания кода и делает его более продуктивным.

Если вы не разрабатываете свою IDE, то вам, наверное, будет более интересно использовать Jedi в качестве расширения редактора. К счастью, уже есть много вариантов.

Возможно, вы уже встречались с Jedi — IPython использует эту библиотеку для автодополнения.
Forwarded from Python Education
map

У Python есть хорошая встроенная поддержка функционального программирования. Одной из самых полезных возможностей является функция map(), особенно в сочетании с лямбда-функциями.

Здесь map() применяет простую лямбда-функцию на каждом элементе x и возвращает объект map, который можно преобразовать в какой-нибудь итерируемый объект вроде списка или кортежа.
Forwarded from Python Education
Что такое logging?

Модуль logging в Python — это набор функций и классов, которые позволяют регистрировать события, происходящие во время работы кода. Этот модуль входит в стандартную библиотеку, поэтому для его использования достаточно написать лишь одну строку:

import logging

Основная функция, которая пригодится Вам для работы с этим модулем — basicConfig(). В ней Вы будете указывать все основные настройки (по крайней мере, на базовом уровне).

У функции basicConfig() 3 основных параметра:

level — уровень логирования на Python;
filename — место, куда мы направляем логи;
format — вид, в котором мы сохраняем результат.
Forwarded from Python Education
pprint

Стандартная функция Python print() делает своё дело. Но если попытаться вывести какой-нибудь большой вложенный объект, результат будет выглядеть не очень приятно.

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

Мастхэв для любого Python-разработчика, работающего с нестандартными структурами данных
Forwarded from Python Education
Перегрузка операторов

Когда-нибудь задумывались, почему Python позволяет использовать оператор + как для сложения чисел, так и для конкатенации строк? За этим как раз и стоит перегрузка операторов.

Вы можете определять объекты, которые используют стандартные символы операторов любым образом. Это позволяет применять их в контексте объектов, с которыми вы работаете
Forwarded from Python Education
__repr__

При определении класса или объекта полезно добавлять «официальный» способ представления объекта строкой. Это сильно упрощает отладку.

Метод __repr__() позволяет определять строковое представление, предназначенное для программиста и удобное при использовании во время отладки, а метод __str__() позволяет определять понятное пользователю строковое представление, которое можно отображать в интерфейсе программы.
Forwarded from Python Education
Принципы программирования. Часть 1

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

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 вам придётся поискать другой инструмент.
Forwarded from Python Education
Принципы программирования. Часть 2

В прошлом посте мы начали разбирать принятые принципы программирования и их аббревиатуры.

YAGNI
You Aren’t Gonna Need It - тебе это не понадобится. Неправильно создавать места только для будущего расширения кода. Неизвестно точно, какой именно понадобится функционал и возможно код будет мешать новому (речь не идет о заглушках на заказанный функционал).

SLAP
Single
Level of Abstraction Principle - принцип единого уровня абстракций. Код должен оставаться поддерживаемым, особенно функции. Если функция не помещается на экран, то ее следует разбить на несколько других функций.
«Функции должны выполнять только одно действие, но выполнять его хорошо» (Роберт Мартин). В частности напоминает принцип DRY, но сильно отличается, код не обязательно должен повторяться. Но должен быть разбит на логические блоки, для большего удобства
Forwarded from Python Education
Аннотации типов

Python — динамически типизированный язык. Вам не нужно указывать тип данных при определении переменных, функций, классов и т.д.

Это позволяет ускорить процесс разработки. Однако мало что раздражает так сильно, как ошибка времени выполнения, возникшая из-за простого несовпадения типа.

С версии Python 3.5 при определении функции можно добавлять аннотации типов

Можно даже определять псевдонимы типов

Хотя их использование опционально, с помощью аннотаций типов код можно сделать более понятным.

Также они позволяют использовать инструменты для проверки типов, чтобы отлавливать ошибки TypeError.
Forwarded from Python Education
Принципы программирования. Часть 3

Продолжаем разбор принципов программирования

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 вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.

Вполне недурно для двух строк кода.
Forwarded from Python Education
Принципы программирования. Часть 4

Продолжаем разбор принципов программирования.

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. В конце концов, язык был назван в честь британского комедийного шоу «Летающий цирк Монти Пайтона». Во многих местах официальной документации можно найти отсылки к самым известным эпизодам шоу.

Конечно, чувство юмора не заканчивается на документации. Попробуйте ввести следующую строку:

$ import antigravity

Оставайся собой, Python. Оставайся собой.
Forwarded from Python Education
Что такое PEP8?

Этот вопрос очень часто встречается на собеседовании. Поэтому обязательно стоит ознакомиться.

Оформлять код на Python можно множеством разных способов. Имя переменной может быть и Variable и VARIABLE и variable. А как правильно? Есть ли для этого стандарт?

Да есть и не один. Вы можете ввести свои стандарты оформления кода для ваших проектов на свое усмотрение.

PEP8 - стандарт оформления кода от команды Python. Содержит полное описание форматирования конструкций, имен переменных и общей компоновки кода.

Подробнее