Python中国社区  »  Python

一份鲜为人知的Python特性

Python之禅 • 5 天前 • 15 次点击  



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万人关注,而且现在有网友提供了中文版了,这无疑给了不习惯阅读英语阅的人有一个利好消息。

英文地址:https://github.com/satwikkansal/wtfpython
中文地址:https://github.com/leisurelicht/wtfpython-cn  

方便你阅读,我将其制作了一份PDF格式了,方便你离线阅读。你可以在微信公众号「Python之禅」后台回复关键词「2」获取这本电子书!


推荐阅读


优秀如你都在关注


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/B7sRM0YjHy
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/27239
 
15 次点击  
分享到微博