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

YAML означает «YAML — не язык разметки» («YAML Ain’t Markup Language»). Это язык форматирования данных, являющийся надмножеством JSON.

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

Модуль PyYAML позволяет использовать YAML в Python. Установить можно так:

$ pip install pyyaml

А затем импортировать:

import yaml

PyYAML позволяет хранить любые Python-объекты и экземпляры любых пользовательских классов.
Forwarded from Python Education
zip

Когда-нибудь возникала необходимость создать словарь из двух списков?

Встроенная функция zip() принимает несколько итерируемых объектов и возвращает последовательность кортежей. Каждый кортеж группирует элементы объектов по их индексу.

Можно провести операцию, обратную zip(), с помощью zip(*).
Forwarded from Python Education
Многоточие в Python

Многоточие Python – это последовательность из трех точек, часто используемая в естественных языках. Но чего вы, возможно, не знаете – это еще и валидный объект в Python

Применяется он преимущественно в операциях нарезки матриц в NumPy. Однако можно использовать его вместо обычного pass в качестве плэйсхолдера в функции, которую еще не реализовали

В примере валидный код Python, и выглядит он теперь не так уж плохо.
Forwarded from Python Education
Colorama

Colorama помогает добавить цвета в терминал

Этот пакет отлично украшает Python-скрипты. Документация проста и понятна, почитать ее можно на странице Colorama в PyPI.

Если хотите, чтобы Colorama работала под Windows, то вначале вызовите colorama.init().
Forwarded from Python Education
Requests

Requests основан на самой часто скачиваемой Python-библиотеке — urllib3. Requests максимально упрощает веб-запросы, оставаясь при этом чрезвычайно мощным и разноплановым инструментом. Скорее всего, вы уже знакомы с этим пакетом, но без него мой список был бы неполным.

Страница PyPI
Документация
Forwarded from Python Education
Анонимные функции

Иногда именованию функции не стоит уделять особого внимания. Например, если вы уверены, что она будет использована только раз. Для таких случаев Python предлагает применять анонимные функции, также называемые лямбда-функциями.

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

Это становится более интересным, когда необходимо использовать функцию в качестве аргумента. В таких случаях она часто используется только один раз. Как известно, map применяет функцию ко всем элементам итерируемого объекта. Мы можем использовать лямбду при вызове map. В данной ситуации использование map() в сочетании с лямбда-функцией является кратким и эффективным.
Forwarded from Python Education
Chardet

Модуль Chardet используется для определения кодировки файла или потока данных. Этот пакет очень выручает при анализе больших полотен разного текста. Также Chardet пригодится при работе с удаленно скачанными данными в неизвестной вам кодировке.

После установки Chardet у вас появится дополнительный инструмент командной строки под названием chardetect.

Конечно же, никто не запрещает работать с библиотекой классическим (программным) способом. Подробнее см. документацию.
Forwarded from Python Education
Форматирование именованных строк

Такую штуку используют нечасто, но если данные уже находятся в словаре, для форматирования именованных строк пригодится этот прием.

Вы даже можете использовать функцию locals(), но в последних версиях Python придется обращаться к f-строкам следующим образом (см. 2 код).
Forwarded from Python Education
Использование подчеркивания в REPL

Вы можете получить результат последнего выражения в Python REPL с помощью оператора подчеркивания, например, в Python REPL это выглядит следующим образом
Forwarded from Python Education
Хеширование

Хеш-таблицы – это особые структуры данных, подобные ассоциативным массивам. Ключами в них могут выступать не только числа, но и другие объекты. Однако есть одно важное условие. Для каждого ключа требуется вычислить особый уникальный код. Этим занимаются специальные функции.

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

Не каждую порцию данных можно хешировать. Возьмем, например, список, изменяющийся в процессе работы программы. В разные моменты времени его хеш будет разным.

Часто говорят, что изменяемые объекты Python в принципе нельзя хешировать, а неизменяемые – всегда можно. На самом деле, возможность хешировать объект и его неизменяемость – понятия разные.
Forwarded from Python Education
Виды строк

Оперировать строками в Python – одно удовольствие, так как язык предоставляет для них множество удобных методов. Также имеется поддержка "сырых" строк и строковых литералов.

Чтобы строка стала "сырой", перед ней необходимо поставить символ r в любом регистре

В такой строке отключается экранирование. Это значит, что обратная косая черта считается самостоятельным символом. Основное применение сырых строк – работа с регулярными выражениями.

Строковые литералы заключаются в тройные кавычки или апострофы. С их помощью удобно обрабатывать большие блоки текста, например, HTML-код, так как их можно разбить на несколько строк. Экранирование кавычек внутри литерала не требуется.

Второй код выведет все, что находится между тройными апострофами. При этом кавычки в значении атрибута и переносы строк сохранятся.
Forwarded from Python Education
Нарезка списка

Синтаксис нарезания таков:

a[start:stop:step]

Start, stop и step необязательны. У них есть дефолтные значения, которые активируются, если не заполнить параметры:

• 0 для start;
• конец списка для stop;
• 1 для step.
Forwarded from Python Education
Итераторы и генераторы

Итератор – это интерфейс, который позволяет перебирать элементы последовательности. Он используется, например, в цикле for ... in ..., но этот механизм скрыт от глаз разработчика. При желании итератор можно получить "в сыром виде", воспользовавшись функцией iter().

Чтобы получить следующий элемент коллекции или строки, нужно передать итератор функции next().

Под капотом функциональность реализуется в методах __iter__ и __next__.

На базе итераторов в языке появились новые элементы синтаксического сахара: выражения-генераторы и генераторы коллекций. Они позволяют устанавливать условия для отбора.

Выражения-генераторы не создают целый список заданной длины сразу, а добавляют элементы по мере необходимости.

Очевидно, что генераторы могут выполнять работу функций map и filter. Более того, они справляются с этой задачей эффективнее.
Forwarded from Python Education
*args и **kwargs

Иногда нельзя предсказать, сколько аргументов получит функция. Чтобы обработать их, используются специальные конструкции args и kwargs.

На самом деле, названия переменных – args, kwargs – это просто соглашение. Важны здесь только звездочки. Они обозначают сборку аргументов в коллекцию (список или словарь). Одна звездочка предназначена для обычных аргументов, две – для именованных.

Можно заменить
args на vars, а kwargs на options или другое слово. Программа будет работать так, как ожидается. Однако, другие разработчики могут вас не понять.

Конструкции
args и kwargs можно использовать как самостоятельно, так и в комбинации с любым количеством обычных аргументов. Например, в коде выше первый параметр farg обрабатывается отдельно, а все остальные собираются в коллекцию.
Forwarded from Python Education
Асинхронность

Асинхронность – еще один способ выполнения нескольких задач сразу. Она предлагает решать проблему с помощью функций обратного вызова (callback).

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

В Python есть несколько асинхронных библиотек. Самые популярные из них – стандартная AsyncIO и Tornado.

В последних версиях языка появились новые синтаксические конструкции async и await.
Forwarded from Python Education
Разбиение строки в список

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

Чтобы разделить по пустому месту, не нужно передавать в split никаких аргументов – используйте mystring.split().

Split также имеет второй параметр, называемый maxsplit, который определяет максимальное количество разбиений. По умолчанию он равен -1 (без ограничений). Второй пример, с ограничением разбиения на 1
Forwarded from Python Education
Отладка

Python-код можно и нужно отлаживать. Для этого в языке есть специальный интерактивный дебаггер pdb.
Forwarded from Python Education
Query JSON

JMESpath – это язык запросов для JSON, который позволяет получать необходимые данные из документа или словаря JSON. Библиотека доступна как для Python, так и для других ЯП, что расширяет ее возможности.
Forwarded from Python Education
Четыре типа кавычек

В некоторых языках программирования одинарные и двойные кавычки предназначены для разных вещей. Python позволяет использовать оба варианта (но строка должна начинаться и заканчиваться одним и тем же типом кавычек). В Python также есть еще два типа кавычек: ''' (тройные одинарные) и """ (тройные двойные). Таким образом, можно использовать несколько уровней кавычек, прежде чем придется заботиться об их экранировании.

Например, этот код правильный:

print """Я бы не хотел никогда услышать, как он говорит: '''Она сказала: "Он сказал: 'Дай мне двести рублей'"'''"""
Forwarded from Python Education
Правдивость различных объектов

В отличие от некоторых языков программирования, в Python объект считается false, только если он пуст. Это значит, что не нужно проверять длину строки, кортежа или словаря — достаточно проверить его как логическое выражение.

Легко предсказать, что 0 — тоже false, а остальные числа — true.

Например, следующие выражения эквивалентны. В данном случае my_object — строка, но здесь мог оказаться другой тип (с соответствующими изменениями условий блока if).

Итак, нет необходимости проверять длину объекта, если вас интересует только, пуст он или нет.