正文
Python 是一个设计优美的解释型高级语言,它提供了很多能让程序员感到舒适的功能特性。但有的时候,Python 的一些输出结果对于初学者来说似乎并不是那么一目了然。
这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子以及鲜为人知的功能特性,并尝试讨论这些现象背后真正的原理!
虽然下面的有些例子并不一定会让你觉得 WTFs,但它们依然有可能会告诉你一些你所不知道的 Python 有趣特性。我觉得这是一种学习编程语言内部原理的好办法,而且我相信你也会从中获得乐趣!
如果您是一位经验比较丰富的 Python 程序员,你可以尝试挑战看是否能一次就找到例子的正确答案。你可能对其中的一些例子已经比较熟悉了,那这也许能唤起你当年踩这些坑时的甜蜜回忆~
如果你不是第一次读了, 你可以在这里获取变动内容.
- 更新说明:https://github.com/satwikkansal/wtfpython/releases/
- 项目地址:https://github.com/leisurelicht/wtfpython-cn
- 英文版:https://github.com/satwikkansal/wtfpython
- pdf 版:http://www.satwikkansal.xyz/wtfpython-pdf/
那么,让我们开始吧...
Structure of the Examples/示例结构
所有示例的结构都如下所示:
> 一个精选的标题 *
标题末尾的星号表示该示例在第一版中不存在,是最近添加的。
# 准备代码.# 释放魔法...
Output (Python version):
>>> 触发语句
出乎意料的输出结果
(可选):对意外输出结果的简短描述。
说明:
- 简要说明发生了什么以及为什么会发生。
如有必要, 举例说明
Output:
>>> 触发语句 # 一些让魔法变得容易理解的例子# 一些正常的输入
注意: 所有的示例都在 Python 3.5.2 版本的交互解释器上测试过, 如果不特别说明应该适用于所有 Python 版本.
Usage/用法
我个人建议,最好依次阅读下面的示例,并对每个示例:
- 仔细阅读设置例子最开始的代码。如果您是一位经验丰富的 Python 程序员,那么大多数时候您都能成功预期到后面的结果。
- 阅读输出结果,
- 确认结果是否如你所料。
- 确认你是否知道这背后的原理。
- 如果不知道, 深呼吸然后阅读说明 (如果你还是看不明白, 别沉默!可以在这 (https://github.com/satwikkansal/wtfPython) 提个 issue)。
- 如果知道,给自己点奖励,然后去看下一个例子。
PS: 你也可以在命令行阅读 WTFpython. 我们有 pypi 包 和 npm 包 (支持代码高亮)。(译: 这两个都是英文版的)
安装 npm 包 wtfpython(https://www.npmjs.com/package/wtfpython)
$ npm install -g wtfpython
或者, 安装 pypi 包 wtfpython(https://pypi.python.org/pypi/wtfpython)
$ pip install wtfpython -U
现在, 在命令行中运行 wtfpython, 你就可以开始浏览了.
Examples/示例
Section: Strain your brain!/大脑运动!
> Strings can be tricky sometimes/微妙的字符串 *
1.
>>> a = "some_string"
>>> id(a)140420665652016
>>> id("some" + "_" + "string") # 注意两个的id值是相同的.
140420665652016
2.
>>> a = "wtf"
>>> b = "wtf"
>>> a is bTrue
>>> a = "wtf!"
>>> b = "wtf!"
>>> a is bFalse
>>> a, b = "wtf!