一个非常牛逼的仓库

栏目: Python · 发布时间: 5年前

内容简介:GitHub 上有个非常牛逼的仓库,作者收集了很多有趣且鲜为人知的 Python “特性”。这些特性有些是真正的特性,也有些是陷阱,因为光从表面看起来就觉得反人类直觉,而所有的一切,其实都是 Cpython 内部实现中利弊之间的的权衡,有优点就有缺点。举个和字符串相关的特别例子:这个比较好理解,a 和 b 指向同一个对象。多了一个感叹号:exclamation:,两个变量指向的就不是同一个对象了。

GitHub 上有个非常牛逼的仓库,作者收集了很多有趣且鲜为人知的 Python “特性”。这些特性有些是真正的特性,也有些是陷阱,因为光从表面看起来就觉得反人类直觉,而所有的一切,其实都是 Cpython 内部实现中利弊之间的的权衡,有优点就有缺点。举个和字符串相关的特别例子:

>>> a = "wtf"
>>> b = "wtf"
>>> a is b
True
复制代码

这个比较好理解,a 和 b 指向同一个对象。

>>> a = "wtf!"
>>> b = "wtf!"
>>> a is b
False
复制代码

多了一个感叹号:exclamation:,两个变量指向的就不是同一个对象了。

再来看:

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

英文地址: github.com/satwikkansa…

中文地址: github.com/leisurelich…

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


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithm Analysis in Java

Data Structures and Algorithm Analysis in Java

Mark A. Weiss / Pearson / 2006-3-3 / USD 143.00

As the speed and power of computers increases, so does the need for effective programming and algorithm analysis. By approaching these skills in tandem, Mark Allen Weiss teaches readers to develop wel......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具