在Python寻找彩蛋:从“Hello World”的玄机到Python之禅

huangyanli00 2020-05-10

即将开播:5月14日,Jenkins在K8S下的三种部署流程和实战演示

本文转载自公众号“读芯术”(ID:AI_Discovery)

也许在你眼里,Python可能只是项目创建、模拟和自动化的工具;但在一些人那里,它就像是《头号玩家》的电影片场,处处暗藏“玄机”,充满了有趣的彩蛋。

你是否已经厌倦了整体呆在家里?不如来探索Python中的隐藏功能和小惊喜吧!

在Python寻找彩蛋:从“Hello World”的玄机到Python之禅

1. 最简单的“HelloWorld”

你写出的第一行代码是什么?一千个哈姆雷特可能都只有同一个答案——“HelloWorld”。那么,你有没有想过, print( Hello World! )并不是打出这两个单词的唯一方法?

实际上,只需导入Python开发人员隐藏的模块就可以实现HelloWorld。试试这个:

>>> import __hello__ 
Hello World! 

包括空格键在内,此代码只有16个字符!这可以说是“最简单的”HelloWorld程序之一。请注意,不能在Python程序中重新导入模块,所以每次运行时可以打印一次信息。

2. Python之禅

这是在PEP20中提出的概念。PEP是指Python的增强提案。

Python是您最喜欢的语言吗?喜欢它什么?是设计吗?有20条描述Python设计的指导原则,可通过以下方式找到其中的19条:

>>> import this 

剩下的那条去哪儿了?笔者猜测,人不可能无所不知。以下是前三条指导原则:

Beautiful is better than ugly. 
Explicit is better than implicit. 
Simple is better than complex. 

必须感谢开发人员为制作如此优雅且易读的编程语言方面所付出的努力。这也是迄今为止Python开发者指南中唯一被称为“彩蛋”的“官方”程序。

3. 体验反重力漫画

一行Python代码,就可以体验反重力漫画!

import antigravity 

试试看!请记住,这么做可能会被困在外太空,浏览几个小时xkcd网络漫画。

4. 括号

与许多其他编程语言不同,Python在构造语句、函数和循环时实际上并不使用花括号{},但以后可能会用。

__future__ 模块包含不兼容更改,这些更改将在不久的将来强制实施。例如,在Python2.6或2.7中从__future__ 导入 print_function允许“print”变成接受参数 print()的函数,就像在Python 3中一样。

看看从__future__开始,括号将如何工作:

>>> from __future__ importbraces 
SyntaxError: not a chance 

5. this.py

还记得Python之禅的前三行吗?

深入挖掘并找到这个模块文件this.py后,就会发现,这是迄今为止最漂亮、最明确、最简单的代码。

6. 散列

无穷大和NaN的散列。

>>> hash(float( inf )) 
314159 
>>> hash(float( nan )) 
0 

这个彩蛋是在Reddit上找到的。笔者真想知道生命、宇宙与万事万物的终极解答。(出处:《银河系漫游指南》。)

7. 巴里叔叔

关于运算符选择的争论已持续了42个年头。是时候解决了!

这一问题是在PEP 401中提出的,以下内容并不难猜到。著名的Python开发者巴里·华沙 (又名巴里叔叔)被“选中”成为终身友好语言叔叔,简称FLUFL。

在Python寻找彩蛋:从“Hello World”的玄机到Python之禅

他制定了一些“修改”,用钻石操作符<>替换不等式运算符 != 。如果同意巴里叔叔的观点,可以导入这个有趣的库,并且<> 语法将会生效,而 !=会导致语法错误。

>>> from __future__ importbarry_as_FLUFL>>> 0 != 1 
SyntaxError: with Barry as BDFL, use  <>  instead of  != >>> 0<> 1 
True 
>>> 1 <> 1 
False 

相关推荐