Рассказываем о пасхалках, скрытых шутках и прочей милоте в языке программирования Python.
Привет, мир
Поздоровайтесь с Python. Он ответит вам, как и подобает любому языку программирования.
Zen of Python
Классическая пасхалка, которую всегда приводят как первый пример игривости Python.
>>> import this
The Zen of Python, by Tim Peters
• Beautiful is better than ugly.
• Explicit is better than implicit.
• Simple is better than complex.
• Complex is better than complicated.
• Flat is better than nested.
• Sparse is better than dense.
• Readability counts.
• Special cases aren't special enough to break the rules.
• Although practicality beats purity.
• Errors should never pass silently.
• Unless explicitly silenced.
• In the face of ambiguity, refuse the temptation to guess.
• There should be one-- and preferably only one --obvious way to do it.
• Although that way may not be obvious at first unless you're Dutch.
• Now is better than never.
• Although never is often better than *right* now.
• If the implementation is hard to explain, it's a bad idea.
• If the implementation is easy to explain, it may be a good idea.
• Namespaces are one honking great idea -- let's do more of those!
«Дзен» наоборот
Но не все знают, что модуль, который содержит код этого «Дзена», выглядит вот так:
s = """Gur Mra bs Clguba, ol Gvz Crgref
Ornhgvshy vf orggre guna htyl.
Rkcyvpvg vf orggre guna vzcyvpvg.
Fvzcyr vf orggre guna pbzcyrk.
Pbzcyrk vf orggre guna pbzcyvpngrq.
Syng vf orggre guna arfgrq.
Fcnefr vf orggre guna qrafr.
Ernqnovyvgl pbhagf.
Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf.
Nygubhtu cenpgvpnyvgl orngf chevgl.
Reebef fubhyq arire cnff fvyragyl.
Hayrff rkcyvpvgyl fvyraprq.
Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff.
Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg.
Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu.
Abj vf orggre guna arire.
Nygubhtu arire vf bsgra orggre guna *evtug* abj.
Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn.
Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn.
Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!"""
d = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)
print("".join([d.get(c, c) for c in s]))
Чем полностью противоречит концепции и философии языка, обозначенной выше. Код написан с помощью шифра Цезаря.
Все о любви
Устали работать? Отвлекитесь, поговорите с Python о любви.
>>> import this
...
>>> love = this
>>> this is love
True
>>> love is True
False
>>> love is False
False
>>> love is not True or False
True
>>> love is not True or False; love is love # FML
True
Комиксы
Команда import antigravity, введенная в IDLE, отправит пользователя на страницу с комиксом.
Вам также будет интересно:
• Как начать программировать на Python: экспресс-гайд.
• 8 типов программ, которые упрощают жизнь разработчиков.
• Cat, Mouse и Brainfuck: сколько языков программирования существует в мире.
Инкремент и декремент
В этой строчке из «Дзена Пайтона» создатели намекают на возможность использования инкремента и декремента двумя путями.
There should be one-- and preferably only one --obvious way to do it.
Никаких скобок!
В языке Python используются отступы для управления потоком, а не фигурные скобки, как в С-подобных языках. Поэтому вот вам пасхалка при вводе from __future__ import braces.
Снова комиксы
Еще одна отсылка на комиксы xkcd, реализующая алгоритм геохэширования. Открывается при вводе from antigravity import geohash.
>>> from antigravity import geohash
>>> # Your location, a date and that date's (or most recent) DJIA opening.
>>> geohash(37.421542, -122.085589, b'2005-05-26-10458.68') 37.857713 -122.544543
И отправляет на эту страницу с комиксом:
Пасхалка на Python в фильме Ex machina
А это пасхальное яйцо не в языке, а на языке — в фильме об искусственном интеллекте Ex machina. Зачастую в кинокартинах о хакерах и компьютерных технологиях на мониторах показывают бессмысленных код, символизирующий сложность происходящего. Ex machina не стал исключением, но здесь создатели фильма подошли к этому с умом. На компьютере главного героя можно увидеть вот такой код, написанный на Python.
Этот код представляет собой программу, которая печатает последовательность символов.
import sys
def sieve(n):
x = [1] * n
x[1] = 0
for i in range(2,n/2):
j = 2 * i
while j < n:
x[j]=0
j = j+i
return x
def prime(n,x):
i = 1
j = 1
while j <= n:
if x[i] == 1:
j = j + 1
i = i + 1
return i - 1
x=sieve(10000)
code = [1206,301,384,5]
key =[1,1,2,2,]
sys.stdout.write("".join(chr(i) for i in [73,83,66,78,32,61,32]))
for i in range (0,4):
sys.stdout.write(str(prime(code[i],x)-key[i]))
Если его выполнить, перед нами окажется уникальный номер книги: ISBN = 9780199226559. И книга эта посвящена искусственному сознанию, что вполне соответствует тематике фильма: Embodiment and the inner life: Cognition and Consciousness in the Space of Possible Minds.
Заключение
Курс «Профессия веб-разработчик»
Нравится Python? Записывайтесь на курс «Python-разработчик с нуля», чтобы в интенсивном режиме приобрести нужные навыки для работы на этом красивом и мощном языке веба. После обучения вы получите портфолио реальных проектов и возможность работать в известных российских IT-компаниях.
Программа курса