閱讀文本大概需要 6.6 分鐘耻煤。
當(dāng)一門(mén)編程語(yǔ)言是開(kāi)源的時(shí)候棺妓,往往會(huì)有產(chǎn)生一些搞笑和有趣的東西炮赦。通常,這意味著社區(qū)的貢獻(xiàn)者會(huì)為該語(yǔ)言添加一些有趣和特別的彩蛋以及隱藏的特性(當(dāng)然前提是不會(huì)增加在生產(chǎn)環(huán)境中使用的風(fēng)險(xiǎn))眼五。
Python 就是一個(gè)很好的例子。作為一門(mén)開(kāi)源的語(yǔ)言批旺,它的社區(qū)為其貢獻(xiàn)了一些十分幽默的東西汽煮。
旁注:如果您想觀察彩蛋棚唆,請(qǐng)注意,它們只能在第一次工作鞋囊。如果希望重新運(yùn)行它們溜腐,需要重新啟動(dòng) Python shell。
0. Hello World
程序員們都熟悉 Hello World 的概念挺益。在大多數(shù)情況下望众,它指的是使用該編程語(yǔ)言編寫(xiě)的最小程序烂翰,它會(huì)將“Hello World”打印到屏幕蚤氏。這可能是在學(xué)習(xí)新的編程語(yǔ)言時(shí)首先要做的。
Python 有一個(gè)酷酷的隱藏的庫(kù)棵里,做了一些有點(diǎn)與眾不同的事:
>>> import __hello__
Hello World...
1. April Fool
下面的 April fool 玩笑是由 Barry Warsaw 提出的,與他的退休有關(guān)典蝌。他是一位著名的 Python 開(kāi)發(fā)者头谜,在他宣布正式退休的時(shí)候,就誕生了下面這個(gè)彩蛋:
>>> from __future__ import barry_as_FLUFL
>>> 1 <> 2
True
2. 由 C++ 轉(zhuǎn)換到 Python
'braces'庫(kù)也是一個(gè)具有濃厚程序員風(fēng)格的玩笑截驮,它在其文檔中提到葵袭,當(dāng)在編寫(xiě) Python 代碼時(shí)使用這個(gè)庫(kù)可提供使用 C++ 花括號(hào)的功能坡锡。但當(dāng)你嘗試使用它的時(shí)候窒所,你將會(huì)看到社區(qū)對(duì)此的看法:
>>> from __future__ import braces
SyntaxError: not a chance
哈哈哈,以為導(dǎo)入 braces 就可以使用花括號(hào)來(lái)結(jié)束代碼塊禽额?Python 的答案是:沒(méi)門(mén)兒脯倒!
3. 經(jīng)典的 Python 之禪
import this
運(yùn)行此命令將顯示由 Tim Peters 編寫(xiě)的"Zen Of Python(Python 之禪)"臣疑。據(jù)傳這是 Python 中的『八榮八恥』讯沈,每個(gè)有追求的 Python 程序員都應(yīng)該謹(jǐn)記于心缺狠。
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!
參考翻譯:
優(yōu)美勝于丑陋挤茄。 顯式勝于隱式冰木。 簡(jiǎn)單勝于復(fù)雜笼恰。 復(fù)雜勝于難懂社证。 扁平勝于嵌套追葡。 分散勝于密集奕短。 可讀性應(yīng)當(dāng)被重視。 盡管實(shí)用性會(huì)打敗純粹性谬返,特例也不能凌駕于規(guī)則之上日杈。 除非明確地使其沉默,錯(cuò)誤永遠(yuǎn)不應(yīng)該默默地溜走翰蠢。 面對(duì)不明確的定義啰劲,拒絕猜測(cè)的誘惑蝇裤。 用一種方法栓辜,最好只有一種方法來(lái)做一件事。 雖然一開(kāi)始這種方法并不是顯而易見(jiàn)的施敢,但誰(shuí)叫你不是 Python 之父呢僵娃。 做比不做好腋妙,但立馬去做有時(shí)還不如不做。 如果實(shí)現(xiàn)很難說(shuō)明匙睹,那它是個(gè)壞想法。 如果實(shí)現(xiàn)容易解釋?zhuān)撬锌赡苁莻€(gè)好想法集绰。 命名空間是個(gè)絕妙的想法栽燕,讓我們多多地使用它們吧碍岔!
4. “反重力”漫畫(huà)
import antigravity
輸入這行代碼蔼啦,會(huì)直接跳轉(zhuǎn)到漫畫(huà)網(wǎng)頁(yè) xkcd仰猖。漫畫(huà)很有意思,一個(gè)人漂浮在天空中鸵赫,他的一位朋友好奇的問(wèn)他是怎么飛起來(lái)的辩棒。
對(duì)話內(nèi)容大致翻譯:
上圖:
“你在飛一睁!怎么做到的者吁?”
“Python!”
下左:
“我昨晚學(xué)習(xí)了 Python,一切都是那么簡(jiǎn)單”
“運(yùn)行 HELLO WORLD 只需要 print "Hello World!"”
下中:
“我還是不明白……動(dòng)態(tài)類(lèi)型饲帅,還是空格复凳?”
“來(lái)加入我們吧,編程又再次變得有趣起來(lái)了洒闸,Python 是一個(gè)全新的世界”
“但你是怎么飛起來(lái)的染坯?”
下右:
“我只是輸入了 import antigravity”
“就這樣均芽?”
“我還對(duì)藥品柜中的所有東西進(jìn)行了采樣比較”(暗指他對(duì)比過(guò)多種編程語(yǔ)言丘逸,但還是覺(jué)得 Python 最簡(jiǎn)單)
“但我想這就是 Python.”
文章轉(zhuǎn)載自 :開(kāi)源中國(guó)社區(qū) [http://www.oschina.net]
本文地址:https://www.oschina.net/news/85139/top-5-python-easter-eggs-and-hidden-features
歡迎關(guān)注我的微信公眾號(hào)「癡海」掀宋,后臺(tái)回去「1024」深纲,領(lǐng)取最新 Python 教程仲锄。