社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

一份鲜为人知的Python特性

Python之禅 • 5 年前 • 339 次点击  



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
 
339 次点击