GitHub 上有个非常牛逼的仓库,作者收集了很多有趣且鲜为人知的 Python “特性”。这些特性有些是真正的特性,也有些是陷阱,因为光从表面看起来就觉得反人类直觉,而所有的一切,其实都是 Cpython 内部实现中利弊之间的的权衡,有优点就有缺点。举个和字符串相关的特别例子:
>>> a = "wtf" >>> b = "wtf" >>> a is b True
这个比较好理解,a 和 b 指向同一个对象。
>>> a = "wtf!" >>> b = "wtf!" >>> a is b False
多了一个感叹号❗,两个变量指向的就不是同一个对象了。
再来看:
>>> 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人关注,而且现在有网友提供了中文版了,这无疑给了不习惯阅读英语阅的人有一个利好消息。
方便你阅读,我将其制作了一份PDF格式了,方便你离线阅读。链接: pan.baidu.com/s/15eM-hryL… 提取码: 6p26 你也可以在微信公众号「Python之禅」后台回复关键词「1」获取其它电子书
PS:有些人对标题表示反感,抱歉,换个普通点的。还有,你们如果不喜欢,直接X掉页面,谢谢。