GitHub 上有个非常有意思的仓库(What the f*ck Python!) ,作者列举了很多有趣且鲜为人知的 Python “特性”,这个有趣的项目意在收集 Python 中那些难以理解和反人类直觉的例子,并尝试讨论这些现象背后真正的原理!
首先我们看个和数字相关示例:
代码解释
1. id() 函数是Python 内置函数,用于获取对象的内存地址;
2. 当你启动Python 的时候,经常使用的数字 -5 到 256 已经被分配好了内存;
3. 解释器并没有在执行 y = 257 时意识到我们已经创建了一个整数 257,所以它在内存中又新建了另一个对象。
另外一个例子:
some_list=[1,2,3]
some_dict={"key_1":1,"key_2":2,"key_3":3}
some_list=some_list.append(4)
some_dict=some_dict.update({"key_4":4})
你知道此时some_list 、some_dict 的值吗?
>>>print(some_list)
None
>>>print(some_dict)
None
代码解释
大多数修改序、映射对象的方法, 比如 list、append、dict.update, list.sort 等等,都是原地修改对象并返回 None,这样做的理由是, 如果操作可以原地完成, 就可以避免创建对象的副本来提高性能。
如果想要添加值到list里面只需要 some_list.append(4) 即可。
当然这个库更多令人惊讶的特性等着你去探索,比如关于字符串操作,迭代列表时删除元素、循环变量泄漏、捕获异常等等,总共有近100来个知识点总结,有兴趣的童鞋可以好好研读,有利于对 Python 的进一步提高。目前这个原版英文库已经有12K+人关注,而且现在有网友提供了中文翻译版,大家可以根据自己的情况进行选择阅读。
英文地址:
https://github.com/satwikkansal/wtfpython
中文地址:
https://github.com/leisurelicht/wtfpython-cn
领取专属 10元无门槛券
私享最新 技术干货