Just Python
10.2K subscribers
4.39K photos
11 videos
4.38K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Download Telegram
Отладка регулярных выражений

Регулярные выражения Python – мощный и полезный инструмент, но отлаживать их – то еще удовольствие. Оказывается, любую регулярку можно визуализировать в виде дерева синтаксического анализа. Эта возможность языка пока экспериментальная, за нее отвечает флаг re.DEBUG в методе re.compile.

Посмотрим на регулярное выражение для поиска тегов font. С ним что-то не так.
Теперь ясно, что именно. В закрывающем дескрипторе не экранированы квадратные скобки, поэтому он воспринимается не как тег, а как группа символов.

#theory // just python | ChatGPT
Выражения-генераторы

В Python есть очень удобные генераторы коллекций (списков, множеств, словарей), которые позволяют легко и быстро создавать отфильтрованные коллекции значений. А еще есть выражения-генераторы, которые не загружают коллекцию в память целиком, а выдают лишь один элемент по требованию. В некоторых случаях это позволяет существенно сэкономить расходы памяти. Единственное отличие в синтаксисе – это круглые скобки.

#theory // just python | ChatGPT
Распаковка аргументов

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

#theory // just python | ChatGPT
Множественное назначение

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

#theory // just python | ChatGPT
Извлечение части списка

Извлечение части списка – слайсинг с указанием индексов начального и конечного элементов. Вместо того, чтобы создавать копию my_list, в примере мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.

#theory // just python | ChatGPT
«Моржовый» оператор

В данном примере := присвоит значение переменной как части выражения, после будет выполнена проверка условия.

#theory // just python | ChatGPT
F-строки

F-строки олицетворяет интерполяцию, то есть включение переменных в строковые выводы.

#theory // just python | ChatGPT
Правдивость различных объектов

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

#theory // just python | ChatGPT
Проверка на вхождение подстроки

Можно проверить, содержится ли нужный элемент в кортеже, списке, словаре, с помощью конструкции if item in list:
Но это может сработать и для строк!

#theory // just python | ChatGPT
Функция vars()

Функция vars() вернет атрибут dict - словарь пространства имен для модуля, класса, экземпляра или любого другого объекта с атрибутом dict. Без аргумента vars() действует как встроенная функция locals().

#theory // just python | ChatGPT
Аргументы командой строки

При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле sys. Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.

#theory // just python | ChatGPT
Сортировка объектов по нескольким ключам

Для решения данной задачи нам понадобится модуль operator.
Сначала сортируем объекты по возрасту, а потом по имени. С помощью operator.itemgetter() получаем поля возраста и имени из каждого словаря в списке.

#theory // just python | ChatGPT
Самый частый элемент в списке

Первым аргументом функция max() получает множество из элементов списка (помним, что в множестве все элементы уникальны).
Затем применяет к каждому из них функцию count, подсчитывающую, сколько раз элемент встречается в списке.
После этого с помощью функции print() печатаем элемент множества, который имеет больше всего «попаданий».

#theory // just python | ChatGPT
Вывод строк текста не больше установленной ширины

Для выполнения данной задачи нам потребуется встроенная библиотека textwrap, которая имеет функцию fill().
Первым аргументом передается сам текст, а вторым задается ширина строки в символах.

#theory // just python | ChatGPT
Извлечение элементов из JSON-документа декларативно

JMESPath делает работу с JSON на Python еще проще. Теперь вы можете декларативно указывать, как извлекать элементы из JSON-документа используя search().

#theory // just python | ChatGPT
Бесконечный итератор последовательности

С помощью itertools.cycle() создаётся кольцевой итератор. Придя к последнему значению, он вновь начинает с первого.

#theory // just python | ChatGPT
Switch-конструкции

Некоторые языки программирования используют switch конструкции, которых нет в python. Однако существует одно хитрое решение – использовать словарь, где значениями будут функции.
В данном примере вместо lambda-функций можете подставить любые другие.

#theory // just python | ChatGPT
Дизассемблирование

Встроенный модуль dis позволяет декомпилировать написанную вами программу в байт-код Python.

#theory // just python | ChatGPT
Pathlib библиотека

В качестве удобной абстракции для работы с путями файлов Python 3 предоставляет pathlib

#theory // just python | ChatGPT
Подсказка типа

Python 3 поддерживает подсказки типов несмотря на динамическую типизацию.

#theory // just python | ChatGPT