Перевод публикуется с сокращениями, автор оригинальной статьи Charudatta Manwatkar.
У меня появилось новое времяпрепровождение – чтение документации Python просто для удовольствия. Когда читаете что-то на досуге, вы склонны замечать интересные лакомые кусочки, которые могли пропустить. Итак, вот список лакомых кусочков, которые заставили меня подумать: «О! Вы можете сделать это на Python?»
1. Атрибуты функций
Подобно тому, как устанавливаются атрибуты классов и объектов, можно устанавливать и атрибуты функций.
Мы установили атрибуты optional_return
и is_awesome
в 10-й и 11-й строках соответственно, а также получили доступ к ним вне
функции в строках 19 и 20. Вывод программы будет следующим:
2. Цикл For-else
В Python вы можете
добавить else
в цикл for. Условие else
будет срабатывать только в том случае, если во время
выполнения в теле цикла не был обнаружен оператор break.
Обратите внимание, что здесь ни один элемент не имеет длины меньше 3, т. е. оператор break никогда не выполнится. Следовательно условие else будет срабатывать (после выполнения цикла for) и печатать показанный выше вывод.
Этого можно достичь с помощью отдельной переменной, которая отслеживает, был ли встречен оператор break. Не исключено, что это также будет менее запутанным для читающего ваш код человека. Добиться результата можно следующим образом:
3. Разделители для INT
Трудно визуально различить целые числа, вроде 10000000 и 100000000. Мы не можем использовать здесь запятые, как в обычном (английском – прим. ред.) языке, потому что Python будет интерпретировать его как кортеж из нескольких целых чисел.
У Python есть очень удобный способ борьбы с этим: можно использовать подчеркивание в качестве разделителя для улучшения читабельности. Таким образом 1_000_000 будет интерпретироваться как целочисленное значение:
4. eval() и exec()
Python имеет возможность динамически считывать строку и обрабатывать ее как часть программного кода. Это достигается с помощью функций eval() и exec() (eval предназначена для вычисления выражений, а exec – для выполнения операторов).
В строке 3 функция eval()
считывает входную строку как выражение Python, вычисляет ее и присваивает
результат переменной b
. В строке 6 функция exec()
считывает входную строку,
как оператор Python и выполняет ее.
Вы даже можете передавать динамически созданные строки этим функциям. Например, можно создать 1000 переменных с именами x_0, x_1,..., x_999 без необходимости вручную записывать каждое из этих объявлений переменных в код. Кому-то подобный способ покажется совершенно бессмысленным, но это не так.
В более широком контексте программирования, а не только в Python, использование eval/exec дает крутой результат, потому что они позволяют писать динамический код, использующий доступную в рантайме информацию для решения проблем, которых может не быть при компиляции. Exec – это почти встроенный в Python интерпретатор. Если у вас есть трудная задача, один из способов решения – использовать именно его. Узнать больше об этих инструментах можно из другой статьи.
5. Ellipsis
Ellipsis или ...
– это встроенная константа Python,
аналогичная встроенным константам типа None, True, False и т. д. Она используется различными способами. Разберем некоторые.
5.1 Плейсхолдер
Подобно pass, Ellipsis может использоваться в качестве плейсхолдера, когда код не полностью написан, но требует некоторого заполнения:
5.2 Альтернатива «None»
None применяется, когда вы хотите обозначить пустой инпут или return, но иногда ни один из них не подходит, и в этом случае заполнителем может служить многоточие:
Функция nth_odd()
вычисляет энное нечетное число. Функция original_num()
вычисляет исходное число
n, учитывая энное нечетное число. Здесь None является одним из ожидаемых входных
данных функции original_num()
, поэтому мы не можем использовать его в качестве плейсхолдера
по умолчанию для аргумента m. Вывод кода будет следующим:
5.3 Нарезка массива в NumPy
NumPy использует многоточие для среза массива. Следующий код показывает два эквивалентных способа нарезки массива NumPy:
Таким образом ...
сообщает о наличии стольких ':', сколько необходимо.
Заключение
В статье мы рассмотрели следующие интересные особенности, которые можно использовать в следующих целях:
- атрибуты функций – для присваивания атрибутов функциям точно так же, как и объектам;
- циклы for-else – для отслеживания того, был ли цикл выполнен без оператора break;
- разделители int – для удобочитаемости больших целочисленных значений, вроде 32_534_478;
- eval() и exec() – для считывания строковых значений как обычного кода Python с последующим запуском;
- ellipsis – для применения универсальной встроенной константы.
Python – это не только полезный язык, но и весьма интересный. Мы все чем-то заняты в повседневной жизни, но это не должно нам мешать лучше изучить язык ради саморазвития. Удачи! Не останавливайтесь на достигнутом!
Дополнительные материалы:
- ТОП-10 книг по Python: эффективно, емко, доходчиво
- Как Python применяется в блокчейн
- Парсинг сайтов на Python: подробный видеокурс и программный код
- 10 советов о том, как научить ребенка программировать на Python
- Python + Visual Studio Code = успешная разработка
На Python создают прикладные приложения, пишут тесты и бэкенд веб-приложений, автоматизируют задачи в системном администрировании, его используют в нейронных сетях и анализе больших данных. Язык можно изучить самостоятельно, но на это придется потратить немало времени. Если вы хотите быстро понять основы программирования на Python, обратите внимание на онлайн-курс «Библиотеки программиста». За 30 уроков (15 теоретических и 15 практических занятий) под руководством практикующих экспертов вы не только изучите основы синтаксиса, но и освоите две интегрированные среды разработки (PyCharm и Jupyter Notebook), работу со словарями, парсинг веб-страниц, создание ботов для Telegram и Instagram, тестирование кода и даже анализ данных. Чтобы процесс обучения стал более интересным и комфортным, студенты получат от нас обратную связь. Кураторы и преподаватели курса ответят на все вопросы по теме лекций и практических занятий.
Комментарии