10 скрытых особенностей Python

0
6015

Что скрывает от нас Python? В этой статье вы вероятно найдёте для себя несколько нетипичных тонкостей, которые можно использовать в Python.

в Python

1. Цепочки операторов сравнения (chaining comparison):

Конечно, вся магия исчезнет если добавить скобки:

2. iter и два параметра

Built-in функция iter возвращает итератор для переданной последовательности. Но если передавать два параметра, то первый должен быть callable-объектом, а второй — результатом вызова первого объекта, при котором нужно прекратить итерацию. Например, читаем из файла до первой пустой строки:

3. Перечисление

Если вы примените enumerate к перечислимому типу, то на выходе получите ещё и индексы:

4. contextlib

Позволяет легко и красиво пользоваться синтаксисом with EXPR as VAR для своих собственных объектов, функций и т. д. Пример из документации:

5. Отладочные скрипты в Python

Вы можете задавать точки останова (breakpoint) при помощи модуля pdb:

Чтобы задать точку останова в любом месте скрипта, напишите там команду pdb.set_trace(). В pdb есть ещё несколько интересных штучек, описанных в документации.

6. Обмен значениями переменных

В 10-ом классе нам на уроке информатике предлагали задачку — обменять местами значения двух переменных, не используя третью. В Python это даже не вопрос:

7. Разворачивание списка/строки

Быстро развернуть список можно следующим образом:

То же самое можно сделать и со строкой:

8. Вложенные list comprehensions

В list comprehensions можно использовать несколько for:

9. rot13, string_escape, unicode_escape кодировки

Супер секретный метод шифрования Rot13:

Далее. Например, есть строка из внешнего источника, при этом в строке есть литералы \n, \t, \r и т.п. Как получить отформатированную строку (по сути, сделать безопасный eval)?

unicode_escape работает аналогично, только с юникодом, а не со строками.

10. Тернарный оператор в Python

Тернарный оператор — это сокращённая форма записи условного выражения if-else. Вот пример использования:

Такой подход позволяет быстро проверить условие, а не писать несколько строчек оператора if. Зачастую это очень удобно, поскольку позволяет писать более компактный код, сохраняя его читабельность.

Дополнительные материалы по теме: