2013/07/29

Python Tips:Pythonのイースターエッグ

Pythonのイースターエッグについてご紹介します。

・・・の説明の前に、まずは「イースターエッグ」について。イースターエッグとは、開発者の遊び心で作られた隠し機能のことです。Wikipediaのページでは次のように説明されています。

イースター・エッグ(Easter egg)とは、コンピュータのソフトウェア・書籍・CDなどに隠されていて、本来の機能・目的とは無関係であるメッセージや画面の総称である。ユーモアの一種である。
これらを「イースター・エッグ」と呼ぶのは、キリスト教の復活祭の際に、装飾した卵(イースター・エッグ)をあちこちに隠して子供たちに探させる遊びにちなむ。
個人的には、もともとの卵を探す遊びの方を知らないので、イースターエッグといえばこちらのイースターエッグが思い浮かびます。

Pythonにもイースターエッグが存在するようです。以下、いくつか見ていきます(これから知る方にとってネタバレにならないよう、やり方だけ・・・)。

import this

import this
# 以下のとおり表示
# The Zen of Python, by Tim Peters
# 
# Beautiful is better than ugly.
# Explicit is better than implicit.
# ...
「import this」とやると、「The Zen of Python」(禅オブPython)がズラズラーっと表示されます。

import hello

import __hello__
import __phello__
プログラマの最初の一歩といえば「Hello world」ですよね。なぜ、「phello」でもHello worldなのかわかりませんが、、「print hello = phello」、でしょうか。

from __future__ import braces

from __future__ import braces
これはPythonのインデント構文にまつわるイースターエッグです。

他の言語でよくある {} ーーいわゆる braces を使ったブロック表現を import します、という意味の import 文。結果は「ありえないっす!」的なニュアンスでしょうか。「インデントによるブロックがこんなにイケてるのに {} なんて導入するわけないじゃん!」的な感じなのかな。

import antigravity

import antigravity
これは、やってみてのお楽しみ。antigravityは「反重力」的な意味です。

love is...

最後に、これはイースターエッグではないのですが、Pythonインタプリタを使ったことば遊びとして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
True
True

以上です。


参考
Easter eggs in Python

0 件のコメント: