Python的隐藏功能

Python编程语言的鲜为人知的但有用的功能是什么?

  • 尝试限制Python核心的答案。
  • 每个答案一个功能。
  • 给出一个示例和功能的简短描述,而不仅仅是文档的链接。
  • 作为第一行使用标题标记该功能。
  • 快速链接到答案:

  • 参数拆包
  • 背带
  • 链接比较运算符
  • 装饰
  • 默认参数陷阱/可变默认参数的危险
  • 字典默认.get
  • 文档字符串测试
  • 省略切片语法
  • 列举
  • 对于/其他
  • 函数作为iter()参数
  • 生成器表达式
  • import this
  • 就地价值交换
  • 列出步进
  • __missing__
  • 多行正则表达式
  • 命名的字符串格式
  • 嵌套列表/发生器理解
  • 运行时的新类型
  • .pth文件
  • ROT13编码
  • 正则表达式调试
  • 发送给发电机
  • 交互式解释器中的选项卡完成
  • 三元表达
  • try/except/else
  • 解包+ print()功能
  • with声明

  • 负面回合

    round()函数将浮点数round()为以十进制数字给出的精度,但精度可能为负数:

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

    注意: round()总是返回上面例子中使用的float, str() ,因为浮点数学是不精确的,在2.x下,第二个例子可以打印为1234.5700000000001 。 另请参阅decimal模块。


    乘以一个布尔值

    我一直在web开发中做的一件事是可选地打印HTML参数。 我们都看过其他语言的代码:

    class='<% isSelected ? "selected" : "" %>'
    

    在Python中,你可以乘以一个布尔值,它完全符合你的期望:

    class='<% "selected" * isSelected %>'
    

    这是因为乘法操作会将布尔值强制为一个整数(0表示False,1表示True),而python将字符串乘以int将重复N次。


    Python的高级切片操作有一个几乎不知道的语法元素,省略号:

    >>> class C(object):
    ...  def __getitem__(self, item):
    ...   return item
    ... 
    >>> C()[1:2, ..., 3]
    (slice(1, 2, None), Ellipsis, 3)
    

    不幸的是,它仅仅是有用的,因为只有在涉及元组时才支持省略号。

    链接地址: http://www.djcxy.com/p/7411.html

    上一篇: Hidden features of Python

    下一篇: From apprentice to guru