🤹 11 забавных пасхалок в Python
Python очень серьезный язык, но он полон «пасхальных яиц» и забавных отсылок. В этой статье мы собрали наиболее интересные скрытые функции одного из самых популярных языков программирования.
Змеиные яйца
Когда создатель языка Гвидо ван Россум начал внедрять Python, он также читал опубликованные сценарии из «Летающего цирка Монти Пайтона», комедийного сериала BBC 1970-х годов. Ван Россум подумал, что ему нужно короткое, уникальное и немного загадочное имя, поэтому он решил назвать язык Python. Как указано в официальной документации, вовсе не обязательно любить это шоу, чтобы пользоваться всеми преимуществами Python.
N.B. Все последующие пасхалки вы можете проверить самостоятельно в интерпретаторе просто запустив команду:
Летающий змий
Одна из самых забавных пасхалок в Python запускается командой:
Команда открывает в браузере комикс XKCD, в котором упоминается Python.
Учтите, что вы можете надолго «зависнуть в воздухе» листая комикс!)
Модуль антигравитации, ссылающийся на комикс XKCD, в котором упоминается Python, был добавлен в Python 3 Скипом Монтанаро.
Geohash
Любопытно, что в этой пасхалке есть еще одна пасхалка. Изучение реализации модуля antigravity.py обнаруживает скрытую функцию под названием «geohash», которая является ссылкой на другой комикс XKCD о геохешировании.
Функция использует алгоритм Рэндалла Манро, который генерирует случайные координаты GPS каждый день на основе промышленного индекса Доу-Джонса и текущей даты.
Некоторые считают, что функцию можно использовать для назначения встреч в офлайне )
Змеиный Дзен
Zen of Python представляет набор из 19 руководящих принципов для написания компьютерных программ, которые влияют на дизайн языка. Инженер-программист Тим Петерс написал этот набор и разместил его в списке рассылки Python в 1999 году. В списке Петерса оставался открытым 20-й принцип, «который должен заполнить Гвидо».
Дзен Питерса был включен под номером 20 в официальные предложения языка Python Enhancement Proposals. Он также включен в интерпретатор Python, как единственное официальное пасхальное яйцо, которое указано как в Руководстве разработчика Python.
В мае 2020 года Барри Варшава переложил афоризмы на музыку.
Список можно увидеть в консоли, если ввести следующую команду:
Умышленная ирония, стоящая за Zen of Python, заключается в том, что сам this.py модуль нарушает почти все афоризмы. Модуль реализован в виде шифра ROT13.
Змеиная любовь
Как бы продолжая афоризмы из Дзена, Python иногда предлагает порассуждать на любовную тему:
Что касается заявления love is not True or False; love is love, оно иронично, но не требует пояснений.
Нет шансов для фигурных скобок
Предпочитаете фигурные скобки в стиле C вместо отступов? Увы их никогда не будет:
types.CodeType – не для слабонервных
Если вы начнете копаться во внутренностях Python, можно наткнуться на предупреждение help для types.CodeType, которое буквально гласит что это не для слабонервных: «Not for the faint of heart».
PEP 401 и FLUFL
Первоапрельская шутка (4/01), PEP 401 заявляет, что Гвидо ван Россум уходит в отставку. Новый титул, данный ему, будет произноситься как «BDEVIL» (Benevolent Dictator Emeritus Vacationing Indefinitely from the Language – Доброжелательный диктатор, почетно отдыхающий от языка на неопределенный срок), а преемником Гвидо станет Барри Варшава, или, как его ласково называют, дядя Барри. Официальный титул дяди Барри – «FLUFL» (Friendly Language Uncle For Life – Дядя на всю жизнь):
Гвидо написал оригинальную реализацию Python в 1989 году и после почти 20 лет руководства сообществом решил уйти в сторону как Доброжелательный диктатор на всю жизнь. Гвидо оставляет Python в надежных руках его нового лидера и его яркого сообщества, чтобы подготовиться к своей мечте всей жизни о восхождении на Эверест. После единодушного голосования Руководящего союза Python (не путать с Python Secret Underground, которого категорически не существует) на конференции PyCon 2009, был выбран преемник Гвидо: Барри Варшава, или как он с любовью известен, дядя Барри.
Дядя Барри принимает следующие решения, чтобы продемонстрировать свое намерение вести сообщество так же ответственно и открыто, как и его предшественник, имя которого ускользает от него:
- Выбор Hg в качестве предпочтительной системы DVCS явился явным доказательством безумия BDEVIL, и отмена этого решения перейти на Bzr вместо этого – единственный верный выбор.
- Оператор неравенства != В Python 3.0 был ужасной ошибкой, вызывающей боль в пальцах, FLUFL восстанавливает оператор <> в качестве единственного написания. Это изменение достаточно важно, чтобы быть реализованным и выпущенным в Python 3.1. Чтобы облегчить переход к этой функции, был добавлен новый оператор future из __future__ import barry_as_FLUFL.
- Функция печати в Python 3.0 была ужасной, вызывающей боль ошибкой, FLUFL восстанавливает оператор печати. Это изменение достаточно важно для реализации и выпуска в Python 3.0.2.
- Неутешительная кривая принятия Python 3.0 свидетельствует о его полном отказе, вся работа над Python 3.1 и последующими версиями Python 3.x настоящим прекращается. Все функции Python 3.0 будут перенесены обратно на Python 2.7, который станет официальным и единственным следующим выпуском. Типы строк и байтов Python 3.0 будут обратно перенесены в Python 2.6.2 для удобства разработчиков.
- Признание того, что C – это язык 20-го века, который почти повсеместно отвергается программистами в возрасте до 30 лет, реализация CPython будет прекращена с выпуском Python 2.6.2 и 3.0.2. После этого эталонная реализация Python будет нацелена на виртуальную машину Parrot. Альтернативные реализации Python (например, Jython, IronPython и PyPy) официально не приветствуются, но допускаются.
- Признается, что Python Software Foundation, превосходно выполнив свою миссию, распускается. Управляющий союз Python (не путать с Python Secret Underground, которого категорически не существует) теперь является единственным распорядителем всей интеллектуальной собственности Python. Все средства PSF настоящим переводятся в PSU (не в этот PSU, а в другой PSU).
Отголосок этой шутки можно по прежнему лицезреть в интерпретаторе:
Хеш бесконечности
Хеш – это фиксированное целое число, идентифицирующее конкретную величину. Хеш бесконечности в Python равен 10⁵ x π. Интересно, что float('-inf') в Python3 хэш равен «-10⁵ x π», а в Python 2 – «-10-x e».
Еще раз Монти Пайтон
Учитывая, что создатель языка любит это шоу неудивительно, что в официальной документации явно сказано: «Ссылки на скетчи Monty Python в документации не только разрешены, но и приветствуются!». Метасинтаксические переменные в Python принимают имена spam и egg, а не более традиционно используемые foo и bar.
Вот еще пример использования str.format(), явно отсылающий к фильму «Монти Пайтон и Священный Грааль»:
Математический модуль
Хотя это не совсем пасхалка, но некоторые из самых популярных математических функций определены в математическом модуле. К ним относятся тригонометрические функции, функции представления, логарифмические функции, функции преобразования углов и т. д. Кроме того, в этом модуле определены две математические константы.
Еще одна хорошо известная математическая константа, определенная в математическом модуле, – это e. Оно называется числом Эйлера и является основанием натурального логарифма. Его значение – 2,718281828459045.
HelloWorld
«Hello, World!» часто используется для иллюстрации основного синтаксиса языка программирования. Это также часто первая программа для многих новичков. Сложно сделать это еще проще чем в Python:
Разработчики Python скрыли модуль, который мог выполнять Hello World, просто импортировав этот модуль! Повторный импорт библиотеки не приводит к повторному появлению сообщения.
Заключение
Подводя итог можно сказать, что Python – это не только мощный и функциональный язык. Разработчики и сообщество вложили в него специфическое чувство юмора и много интересных изюминок. Если вы решили освоить его с нуля, вам поможет «Самоучитель для начинающих». В библиотеке программиста вы также найдете множество полезных материалов по Python для разного уровня и задач.
На Python создают прикладные приложения, пишут тесты и бэкенд веб-приложений, автоматизируют задачи в системном администрировании, его используют в нейронных сетях и анализе больших данных. Язык можно изучить самостоятельно, но на это придется потратить немало времени. Если вы хотите быстро понять основы программирования на Python, обратите внимание на онлайн-курс «Библиотеки программиста». За 30 уроков (15 теоретических и 15 практических занятий) под руководством практикующих экспертов вы не только изучите основы синтаксиса, но и освоите две интегрированные среды разработки (PyCharm и Jupyter Notebook), работу со словарями, парсинг веб-страниц, создание ботов для Telegram и Instagram, тестирование кода и даже анализ данных. Чтобы процесс обучения стал более интересным и комфортным, студенты получат от нас обратную связь. Кураторы и преподаватели курса ответят на все вопросы по теме лекций и практических занятий.