GitHub 上有个很是牛逼的仓库,做者收集了不少有趣且不为人知的 Python “特性”。这些特性有些是真正的特性,也有些是陷阱,由于光从表面看起来就以为反人类直觉,而全部的一切,其实都是 Cpython 内部实现中利弊之间的的权衡,有优势就有缺点。举个和字符串相关的特别例子:python
>>> a = "wtf"
>>> b = "wtf"
>>> a is b
True
复制代码
这个比较好理解,a 和 b 指向同一个对象。git
>>> a = "wtf!"
>>> b = "wtf!"
>>> a is b
False
复制代码
多了一个感叹号❗,两个变量指向的就不是同一个对象了。github
再来看:微信
>>> a, b = "wtf!", "wtf!"
>>> a is b
True
复制代码
若是把两个变量写在一行,又指向同一个对象了。初学者看了一脸懵逼,即便你是有经验的 Python 开发者,第一次见到这种状况也会大为惊讶,原来 Python 中还有如此骚操做。 若是把代码放在IDE中执行,结果又不同:性能
a = "wtf!"
b = "wtf!"
print(a is b) # True
复制代码
输出结果是 True,是否是以为太匪夷所思了。 其实,这里面涉及到的知识点是CPython 为了提升性能对字符串对象作的优化,涉及到字符串的 intern 机制,还有代码块的知识等概念。优化
固然这个库还总结了不少不少相似让你惊讶的操做,好比关于哈希操做,有关字典特性,默承认变参数陷阱等等。总共有近100来个知识点总结。强烈建议你们好好研读,有利于对 Pytho 的进一步提升。目前这个库已经有将近10000人关注,并且如今有网友提供了中文版了,这无疑给了不习惯阅读英语阅的人有一个利好消息。spa
英文地址:github.com/satwikkansa…
中文地址:github.com/leisurelich…code
方便你阅读,我将其制做了一份PDF格式了,方便你离线阅读。连接: pan.baidu.com/s/15eM-hryL… 提取码: 6p26 你也能够在微信公众号「Python之禅」后台回复关键词「1」获取其它电子书对象
PS:有些人对标题表示反感,抱歉,换个普通点的。还有,大家若是不喜欢,直接X掉页面,谢谢。开发