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

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

快速链接到答案:

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


当前回答

Python解释器

>>> 

也许不是不太为人所知,但肯定是我最喜欢的Python特性之一。

其他回答

python的一个小错误。通常快速连接字符串列表的方法是,

''.join(list_of_strings)

集理解

>>> {i**2 for i in range(5)}                                                       
set([0, 1, 4, 16, 9])

Python文档

维基百科的条目

我个人很喜欢这三个不同的引语

str = "I'm a string 'but still I can use quotes' inside myself!"
str = """ For some messy multi line strings.
Such as
<html>
<head> ... </head>"""

也很酷:不用转义正则表达式,避免使用原始字符串的可怕的反斜杠沙拉:

str2 = r"\n" 
print str2
>> \n

pdb - Python调试器

作为程序员,要进行严肃的程序开发,首先需要的东西之一是调试器。Python有一个内置的模块,叫做pdb(自然是“Python调试器”的缩写!)

http://docs.python.org/library/pdb.html

布尔上下文中的对象

空元组、列表、字典、字符串和许多其他对象在布尔上下文中等价于False(非空对象等价于True)。

empty_tuple = ()
empty_list = []
empty_dict = {}
empty_string = ''
empty_set = set()
if empty_tuple or empty_list or empty_dict or empty_string or empty_set:
  print 'Never happens!'

这允许逻辑运算返回它的一个操作数,而不是True/False,这在某些情况下很有用:

s = t or "Default value" # s will be assigned "Default value"
                         # if t is false/empty/none