你知道 Python 这五个有趣的彩蛋吗?

当一门编程语言是开源的时候,往往会有产生一些搞笑和有趣的东西。通常,这意味着社区的贡献者会为该语言添加一些有趣和特别的彩蛋以及隐藏的特性(当然前提是不会增加在生产环境中使用的风险)。
Python 就是一个很好的例子。作为一门开源的语言,它的社区为其贡献了一些十分幽默的东西。

旁注:如果您想观察彩蛋,请注意,它们只能在第一次工作。如果希望重新运行它们,需要重新启动 Python shell。

0. Hello World

程序员们都熟悉 Hello World 的概念。在大多数情况下,它指的是使用该编程语言编写的最小程序,它会将“Hello World”打印到屏幕。这可能是在学习新的编程语言时首先要做的。
Python 有一个酷酷的隐藏的库,做了一些有点与众不同的事:

>>> import hello
Hello World...
1. April Fool

下面的 April fool 玩笑是由 Barry Warsaw 提出的,与他的退休有关。他是一位著名的 Python 开发者,在他宣布正式退休的时候,就诞生了下面这个彩蛋:

>>> from future import barry_as_FLUFL
>>> 1 <> 2
True
  1. 由 C++ 转换到 Python

'braces'库也是一个具有浓厚程序员风格的玩笑,它在其文档中提到,当在编写 Python 代码时使用这个库可提供使用 C++ 花括号的功能。但当你尝试使用它的时候,你将会看到社区对此的看法:

from future import braces
SyntaxError: not a chance
哈哈哈,以为导入 braces 就可以使用花括号来结束代码块?Python 的答案是:没门儿!

  1. 经典的 Python 之禅

import this
运行此命令将显示由 Tim Peters 编写的"Zen Of Python(Python 之禅)"。据传这是 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!
参考翻译:

优美胜于丑陋。
显式胜于隐式。
简单胜于复杂。
复杂胜于难懂。
扁平胜于嵌套。
分散胜于密集。
可读性应当被重视。
尽管实用性会打败纯粹性,特例也不能凌驾于规则之上。
除非明确地使其沉默,错误永远不应该默默地溜走。
面对不明确的定义,拒绝猜测的诱惑。
用一种方法,最好只有一种方法来做一件事。
虽然一开始这种方法并不是显而易见的,但谁叫你不是 Python 之父呢。
做比不做好,但立马去做有时还不如不做。
如果实现很难说明,那它是个坏想法。
如果实现容易解释,那它有可能是个好想法。
命名空间是个绝妙的想法,让我们多多地使用它们吧!

  1. “反重力”漫画

import antigravity
输入这行代码,会直接跳转到漫画网页 xkcd。漫画很有意思,一个人漂浮在天空中,他的一位朋友好奇的问他是怎么飞起来的。

对话内容大致翻译:
上图:

“你在飞!怎么做到的?”

“Python!”

下左:

“我昨晚学习了 Python,一切都是那么简单”

“运行 HELLO WORLD 只需要 print "Hello World!"”

下中:
“我还是不明白……动态类型,还是空格?”

“来加入我们吧,编程又再次变得有趣起来了,Python 是一个全新的世界”

“但你是怎么飞起来的?”

下右:

“我只是输入了 import antigravity”

“就这样?”

“我还对药品柜中的所有东西进行了采样比较”(暗指他对比过多种编程语言,但还是觉得 Python 最简单)

“但我想这就是 Python.”

本文来自开源中国社区 [http://www.oschina.net]

时间: 2024-08-22 14:32:39

你知道 Python 这五个有趣的彩蛋吗?的相关文章

十个非常有趣的 Linux 彩蛋

在1979年的时候,Atari 公司为 Atari 2600 开发了一个电子游戏--Adventure. 制作 Adventure 的程序员悄悄的把这样的一个功能放进了游戏里,当用户把一个"隐形方块"移动到特定的一面墙上时,会让用户进入一个"密室".那个房间里只有一句话:"Created by Warren Robinett"--意思是,由 Warren Robinett 创建. 图片来自: Wikipedia Atari 有一项反对作者将自己的

11个无用而有趣的Linux终端彩蛋

这里有一些很酷的Linux终端彩蛋,其中的每一个看上去并没有实际用途,但很有趣. 只工作不玩耍-- 当我们使用命令行工作时,Linux是功能和实用性最好的操作系统之一.想要执行一个特殊任务?可能一个程序或者脚本就可以帮你搞定.但就像一本书中说到的,只工作不玩耍聪明的孩子也会变傻.下边是我最喜欢的可以在终端做的没有实际用途的.傻傻的.恼人的.可笑的事情. 让终端成为一个有态度的人 第一步)敲入sudo visudo 第二步)在"Defaults"末尾(文件的前半部分)添加一行"

selenium-webdriver(python) (十五) 鼠标事件简介

本节重点: ActionChains 类 context_click()  右击 double_click()   双击 drag_and_drop()  拖动 测试的产品中有一个操作是右键点击文件列表会弹出一个快捷菜单,可以方便的选择快捷菜单中的选择对文件进行操作(删除.移动.重命名),之前学习元素的点击非常简单: driver.find_element_by_id("xxx").click() 那么鼠标的双击.右击.拖动等是否也是这样的写法呢?例如右击: driver.find_e

selenium-webdriver(python) (十五) -- 鼠标事件

本节重点: ActionChains 类   context_click()  右击   double_click()   双击   drag_and_drop()  拖动   测试的产品中有一个操作是右键点击文件列表会弹出一个快捷菜单,可以方便的选择快捷菜单中的选择对文件进行操作(删除.移动.重命名),之前学习元素的点击非常简单: driver.find_element_by_id("xxx").click() 那么鼠标的双击.右击.拖动等是否也是这样的写法呢?例如右击: drive

[Python] 专题五.列表基础知识 二维list排序、获取下标和处理txt文本实例

        通常测试人员或公司实习人员需要处理一些txt文本内容,而此时使用Python是比较方便的语言.它不光在爬取网上资料上方便,还在NLP自然语言处理方面拥有独到的优势.这篇文章主要简单的介绍使用Python处理txt汉字文字.二维列表排序和获取list下标.希望文章对你有所帮助或提供一些见解~ 一. list二维数组排序         功能:已经通过Python从维基百科中获取了国家的国土面积和排名信息,此时需要获取国土面积并进行排序判断世界排名是否正确.         列表基础

十五个有趣的JavaScript与CSS库

在十一月份的前端技术列表中,我们整合了一些令人感到惊叹的 GitHub 项目,其中包含了新的 CSS 框架.node.js包管理器,以及用于实现图标.加载效果.工具提示的纯 CSS 解决方案. 那么,让我们一起来看看吧.Have Fun ! 1. Wing Wing 是一个微型(压缩后仅有4KB)响应式的 CSS 框架,它提供了一个 12 列响应式网格以及基础的样式组件集,可为你的建站工作打下坚实的基础.当然,这个项目最酷的地方在于,它绝大多数的 HTML 元素都是自动样式化的,而不需要任何额外

关于 Android L 的五个有趣事实

谷歌在一个月前的I/O大会上正式发布了新一代Android系统Android L.尽管正式版Android L目前尚未发布,不过开发者预览版Android L已经向人们清楚地展示出了新版Android系统究竟是什么样子.Android L采用了被谷歌称之为Material Design的设计风格,在外观界面上有着很大变化,可以说是Android系统自诞生以来升级幅度最大的一次更新. 然而除了Material Design之外,Android L究竟还拿下了哪些"第一"呢? Androi

盘点十大隐藏在Python中的彩蛋

1.使用re.DEBUG查看正则表达式的匹配过程 正则表达式是Python的一大特色,但是调试起来会很痛苦,很容易得出一个bug.幸运的是,Python可以打印出正则表达式的解析树,通过re.debug来显示re.compile的完整过程. 一旦你理解了语法,你就可以发现你的错误.在这里我们可以看到[/font]忘了去除[] 2.enumerate函数用于遍历列表中的元素以及它们的下标 3.对默认实参要多加小心 相反,你应该使用一个标记值表示"无定义",来替换"[]"

细数10个隐藏在Python中的彩蛋

1.使用re.DEBUG查看正则表达式的匹配过程 正则表达式是Python的一大特色,但是调试起来会很痛苦,很容易得出一个bug.幸运的是,Python可以打印出正则表达式的解析树,通过re.debug来显示re.compile的完整过程. 一旦你理解了语法,你就可以发现你的错误.在这里我们可以看到[/font]忘了去除[] 2.enumerate函数用于遍历列表中的元素以及它们的下标 3.对默认实参要多加小心 相反,你应该使用一个标记值表示"无定义",来替换"[]"