一个非常牛逼的仓库

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

内容简介: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」获取这本电子书!


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

查看所有标签

猜你喜欢:

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

若为自由故

若为自由故

[美] Sam Williams / 邓楠、李凡希 / 人民邮电出版社 / 2015-4 / 49

理查德·马修·斯托曼(Richard Matthew Stallman,简称RMS)是自由软件之父,他是自由软件运动的精神领袖、GNU计划以及自由软件基金会的创立者。作为一个著名的黑客,他的主要成就包括Emacs及后来的GNU Emacs、GNU C 编译器及GDB 调试器。他编写的GNU通用公共许可证(GNU GPL)是世上最广为采用的自由软件许可证,为copyleft观念开拓出一条崭新的道路。......一起来看看 《若为自由故》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

MD5 加密
MD5 加密

MD5 加密工具