Отладка регулярных выражений
Регулярные выражения Python – мощный и полезный инструмент, но отлаживать их – то еще удовольствие. Оказывается, любую регулярку можно визуализировать в виде дерева синтаксического анализа. Эта возможность языка пока экспериментальная, за нее отвечает флаг
Посмотрим на регулярное выражение для поиска тегов font. С ним что-то не так.
Теперь ясно, что именно. В закрывающем дескрипторе не экранированы квадратные скобки, поэтому он воспринимается не как тег, а как группа символов.
#theory // just python | ChatGPT
Регулярные выражения Python – мощный и полезный инструмент, но отлаживать их – то еще удовольствие. Оказывается, любую регулярку можно визуализировать в виде дерева синтаксического анализа. Эта возможность языка пока экспериментальная, за нее отвечает флаг
re.DEBUG в методе re.compile.Посмотрим на регулярное выражение для поиска тегов font. С ним что-то не так.
Теперь ясно, что именно. В закрывающем дескрипторе не экранированы квадратные скобки, поэтому он воспринимается не как тег, а как группа символов.
#theory // just python | ChatGPT
Выражения-генераторы
В Python есть очень удобные генераторы коллекций (списков, множеств, словарей), которые позволяют легко и быстро создавать отфильтрованные коллекции значений. А еще есть выражения-генераторы, которые не загружают коллекцию в память целиком, а выдают лишь один элемент по требованию. В некоторых случаях это позволяет существенно сэкономить расходы памяти. Единственное отличие в синтаксисе – это круглые скобки.
#theory // just python | ChatGPT
В Python есть очень удобные генераторы коллекций (списков, множеств, словарей), которые позволяют легко и быстро создавать отфильтрованные коллекции значений. А еще есть выражения-генераторы, которые не загружают коллекцию в память целиком, а выдают лишь один элемент по требованию. В некоторых случаях это позволяет существенно сэкономить расходы памяти. Единственное отличие в синтаксисе – это круглые скобки.
#theory // just python | ChatGPT
Распаковка аргументов
Параметры можно передать в функцию в виде списка или словаря и распаковать их автоматически, используя синтаксис
#theory // just python | ChatGPT
Параметры можно передать в функцию в виде списка или словаря и распаковать их автоматически, используя синтаксис
* и **.Эта фича языка очень полезна, так как в Python списки, кортежи и словари широко используются в качестве контейнеров.#theory // just python | ChatGPT
Множественное назначение
Несколько переменных назначаются в одной строке, используя распаковку кортежа. Это невероятно удобный способ разложить любой сложный объект на независимые переменные.
#theory // just python | ChatGPT
Несколько переменных назначаются в одной строке, используя распаковку кортежа. Это невероятно удобный способ разложить любой сложный объект на независимые переменные.
#theory // just python | ChatGPT
Извлечение части списка
Извлечение части списка – слайсинг с указанием индексов начального и конечного элементов. Вместо того, чтобы создавать копию my_list, в примере мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.
#theory // just python | ChatGPT
Извлечение части списка – слайсинг с указанием индексов начального и конечного элементов. Вместо того, чтобы создавать копию my_list, в примере мы напрямую обращаемся к этому объекту. Это рациональное расходование памяти, и на больших объемах данных вы точно оцените эту фичу.
#theory // just python | ChatGPT
«Моржовый» оператор
В данном примере
#theory // just python | ChatGPT
В данном примере
:= присвоит значение переменной как части выражения, после будет выполнена проверка условия.#theory // just python | ChatGPT
F-строки
F-строки олицетворяет интерполяцию, то есть включение переменных в строковые выводы.
#theory // just python | ChatGPT
F-строки олицетворяет интерполяцию, то есть включение переменных в строковые выводы.
#theory // just python | ChatGPT
Правдивость различных объектов
В отличие от некоторых языков программирования, в Python объект считается False, только если он пуст. Это значит, что не нужно проверять длину строки, кортежа или словаря – достаточно проверить его как логическое выражение. Разумеется, 0 – тоже False, а остальные числа – True.
#theory // just python | ChatGPT
В отличие от некоторых языков программирования, в Python объект считается False, только если он пуст. Это значит, что не нужно проверять длину строки, кортежа или словаря – достаточно проверить его как логическое выражение. Разумеется, 0 – тоже False, а остальные числа – True.
#theory // just python | ChatGPT
Проверка на вхождение подстроки
Можно проверить, содержится ли нужный элемент в кортеже, списке, словаре, с помощью конструкции
Но это может сработать и для строк!
#theory // just python | ChatGPT
Можно проверить, содержится ли нужный элемент в кортеже, списке, словаре, с помощью конструкции
if item in list: Но это может сработать и для строк!
#theory // just python | ChatGPT
Функция vars()
Функция
#theory // just python | ChatGPT
Функция
vars() вернет атрибут dict - словарь пространства имен для модуля, класса, экземпляра или любого другого объекта с атрибутом dict. Без аргумента vars() действует как встроенная функция locals().#theory // just python | ChatGPT
Аргументы командой строки
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле
#theory // just python | ChatGPT
При запуске программ через терминал можно указывать аргументы через пробел. В Python список этих аргументов хранится в переменной argv во встроенном модуле
sys. Первым элементом всегда является имя запускаемого скрипта, вторым и далее — непосредственно сами аргументы.#theory // just python | ChatGPT
Сортировка объектов по нескольким ключам
Для решения данной задачи нам понадобится модуль operator.
Сначала сортируем объекты по возрасту, а потом по имени. С помощью
#theory // just python | ChatGPT
Для решения данной задачи нам понадобится модуль operator.
Сначала сортируем объекты по возрасту, а потом по имени. С помощью
operator.itemgetter() получаем поля возраста и имени из каждого словаря в списке.#theory // just python | ChatGPT
Самый частый элемент в списке
Первым аргументом функция
Затем применяет к каждому из них функцию
После этого с помощью функции
#theory // just python | ChatGPT
Первым аргументом функция
max() получает множество из элементов списка (помним, что в множестве все элементы уникальны).Затем применяет к каждому из них функцию
count, подсчитывающую, сколько раз элемент встречается в списке.После этого с помощью функции
print() печатаем элемент множества, который имеет больше всего «попаданий».#theory // just python | ChatGPT
Вывод строк текста не больше установленной ширины
Для выполнения данной задачи нам потребуется встроенная библиотека
Первым аргументом передается сам текст, а вторым задается ширина строки в символах.
#theory // just python | ChatGPT
Для выполнения данной задачи нам потребуется встроенная библиотека
textwrap, которая имеет функцию fill().Первым аргументом передается сам текст, а вторым задается ширина строки в символах.
#theory // just python | ChatGPT
Извлечение элементов из JSON-документа декларативно
#theory // just python | ChatGPT
JMESPath делает работу с JSON на Python еще проще. Теперь вы можете декларативно указывать, как извлекать элементы из JSON-документа используя search().#theory // just python | ChatGPT
Бесконечный итератор последовательности
С помощью
#theory // just python | ChatGPT
С помощью
itertools.cycle() создаётся кольцевой итератор. Придя к последнему значению, он вновь начинает с первого.#theory // just python | ChatGPT
Switch-конструкции
Некоторые языки программирования используют switch конструкции, которых нет в python. Однако существует одно хитрое решение – использовать словарь, где значениями будут функции.
В данном примере вместо lambda-функций можете подставить любые другие.
#theory // just python | ChatGPT
Некоторые языки программирования используют switch конструкции, которых нет в python. Однако существует одно хитрое решение – использовать словарь, где значениями будут функции.
В данном примере вместо lambda-функций можете подставить любые другие.
#theory // just python | ChatGPT
Дизассемблирование
Встроенный модуль
#theory // just python | ChatGPT
Встроенный модуль
dis позволяет декомпилировать написанную вами программу в байт-код Python.#theory // just python | ChatGPT
Pathlib библиотека
В качестве удобной абстракции для работы с путями файлов Python 3 предоставляет
#theory // just python | ChatGPT
В качестве удобной абстракции для работы с путями файлов Python 3 предоставляет
pathlib#theory // just python | ChatGPT
Подсказка типа
Python 3 поддерживает подсказки типов несмотря на динамическую типизацию.
#theory // just python | ChatGPT
Python 3 поддерживает подсказки типов несмотря на динамическую типизацию.
#theory // just python | ChatGPT