Python编程语言中有哪些鲜为人知但很有用的特性?

尽量将答案限制在Python核心。 每个回答一个特征。 给出一个例子和功能的简短描述,而不仅仅是文档链接。 使用标题作为第一行标记该特性。

快速链接到答案:

参数解包 牙套 链接比较运算符 修饰符 可变默认参数的陷阱/危险 描述符 字典默认的.get值 所以测试 省略切片语法 枚举 其他/ 函数作为iter()参数 生成器表达式 导入该 就地值交换 步进列表 __missing__物品 多行正则表达式 命名字符串格式化 嵌套的列表/生成器推导 运行时的新类型 .pth文件 ROT13编码 正则表达式调试 发送到发电机 交互式解释器中的制表符补全 三元表达式 试着/ / else除外 拆包+打印()函数 与声明


当前回答

内存管理

Python动态分配内存并使用垃圾收集来回收未使用的空间。一旦一个对象超出作用域,并且没有其他变量引用它,它将被恢复。我不必担心缓冲区溢出和缓慢增长的服务器进程。内存管理也是其他动态语言的一个特性,但Python在这方面做得非常好。

当然,我们必须注意循环引用,并保持对不再需要的对象的引用,但弱引用在这里有很大帮助。

其他回答

迭代工具

这个模块经常被忽视。下面的例子使用itertools.chain() 扁平化列表:

>>> from itertools import *
>>> l = [[1, 2], [3, 4]]
>>> list(chain(*l))
[1, 2, 3, 4]

更多应用请参见http://docs.python.org/library/itertools.html#recipes。

功能的支持。

特别是生成器和生成器表达式。

Ruby使它再次成为主流,但Python也可以做得一样好。在库中不像Ruby中那样普遍,这太糟糕了,但我更喜欢它的语法,它更简单。

因为它们不是那么普遍,我没有看到很多例子来说明它们为什么有用,但它们让我写出了更干净、更高效的代码。

发电机

我认为很多刚开始学习Python的开发人员在没有真正掌握生成器的用途或了解其功能的情况下就忽略了它们。直到我读了David M. Beazley关于生成器的PyCon演示(在这里可以找到),我才意识到它们是多么有用(真的是必不可少)。这个演示对我来说是一种全新的编程方式,我把它推荐给任何对生成器没有深入了解的人。

消极的圆

round()函数的作用是:将浮点数四舍五入为给定精度的十进制数字,但精度可以为负数:

>>> str(round(1234.5678, -2))
'1200.0'
>>> str(round(1234.5678, 2))
'1234.57'

注意:round()总是返回一个浮点数,str()在上面的例子中使用,因为浮点数学是不精确的,并且小于2。X第二个示例可以打印为1234.5700000000001。另请参阅十进制模块。

内存管理

Python动态分配内存并使用垃圾收集来回收未使用的空间。一旦一个对象超出作用域,并且没有其他变量引用它,它将被恢复。我不必担心缓冲区溢出和缓慢增长的服务器进程。内存管理也是其他动态语言的一个特性,但Python在这方面做得非常好。

当然,我们必须注意循环引用,并保持对不再需要的对象的引用,但弱引用在这里有很大帮助。