注意: 虽然 JavaScript 对本网站不是必需的,但您与内容的互动将受到限制。请开启 JavaScript 以获得完整体验。

亮点:Python 2.4

亮点:Python 2.4

以下是 Python 2.4 中新功能(主观)的亮点。

更快

许多在 Python 2.3 中添加的模块(例如 sets 和 heapq)已经用 C 重新编码。此外,解释器还有许多其他速度提升。(有关详细信息,请参阅“新增内容”文档的第 8.1 节,优化)。

新的语言特性

  • 多行导入 - 当使用以下形式的导入时from foo import bar, baz, bing, bang,您可以将导入的名称用括号括起来,并且它们可以跨行拆分。这是 PEP 328 的一部分。
  • 告别 OverflowWarning - 如 PEP 237 中所述,Python 不再生成 OverflowWarnings。
  • 函数/方法装饰器 - 函数和方法装饰器,最早在 PEP 318 中描述,已添加到该语言中,使用“饼图装饰器”语法。装饰器位于 'def' 之前的行上,并以 '@' 符号为前缀。( PEP 318)
  • 赋值为 None - 编译器现在将赋值为 None 视为 SyntaxError。
  • 导入失败清理 - 当模块导入失败时,2.4a2 之前的 Python 版本会在 sys.modules 中留下一个损坏的模块 - 后续尝试导入失败的模块会静默成功,但会使用损坏的模块对象。如果导入失败,导入机制现在会从 sys.modules 中删除失败的模块。
  • -m 命令行选项 - python -m modulename 将在标准库中查找模块并调用它。 例如,python -m pdb 等同于 python /usr/lib/python2.4/pdb.py

新的或升级的内置函数

  • 内置集合 - 在 2.3 中引入的集合模块现在已在 C 中实现,并且 set 和 frozenset 类型可用作内置类型 (PEP 218)
  • 统一整数和长整数 - 返回数字过大而无法用整数表示的操作将自动返回一个长整数。( PEP 237)
  • 生成器表达式 - 生成器表达式类似于列表推导式,但它们不是创建整个结果列表,而是创建一个逐个返回结果的生成器。 这允许高效处理非常大的列表。( PEP 289)
  • reversed() - 一个新的内置函数,它接受一个序列并返回一个迭代器,该迭代器按相反的顺序循环遍历序列的元素 (PEP 322)
  • 新的 sort() 关键字参数 - sort() 现在接受关键字参数 cmp、key 和 reverse
  • sorted() - 一个新的内置函数 sorted() 的作用类似于就地 list.sort(),但可以在表达式中使用,因为它返回一个排序后的序列副本。
  • 字符串方法 - 字符串获得了 rsplit() 方法,并且字符串方法 ljust()、rjust() 和 center() 接受一个参数来指定填充字符。
  • eval() 现在接受任何形式的充当映射的对象作为其 locals 的参数,而不仅仅是接受字典。 由于这个小小的改变,各种新的和闪亮的东西都变得可能了。

新的或升级的模块和包

  • 一个新的 subprocess 模块,用于以独立于平台的方式生成进程(请参阅 PEP 324)
  • decimal - 一种新的数字类型,允许精确表示浮点数(避免二进制浮点数的问题)(PEP 327)
  • 已为支持随机数据(熵)源的系统添加 os.urandom()
  • mpz、rotor 和 xreadlines 模块已被删除。
  • difflib 模块现在包括一个 HtmlDiff 类,该类创建一个 HTML 表格,显示两个文本版本并排比较。
  • socket 模块在支持的系统上获得了 socketpair() 函数。
  • os.path.lexists(),它测试路径是否为符号链接。
  • doctest 模块已进行了大规模重构,添加了许多新功能,以及许多用于自定义行为的新钩子。
  • 非阻塞 SSL 套接字再次工作。
  • 当还指定了星期几和年份时,time.strptime() 现在可以使用 %U 或 %W(一年中的第几周)来推断日期。
  • optparse 模块已更新为 Optik 1.5a1。
  • 新的模块 cookielib 支持客户端 HTTP cookie。 urllib2 获得了一个新的类 HTTPCookieProcessor,它使用这个新的模块。
  • 由 Hye-Shik Chang 维护的东亚编解码器 CJKCodecs 集合已集成到 2.4 中。
  • 电子邮件包的 Parser 已完全重写,以更好地处理格式错误的电子邮件消息。 它现在应该永远不会解析消息失败,并且将注释已解析的消息,以指示在解析期间发现的问题。 还有一个新的 FeedParser,它允许在读取消息时将消息馈送到解析器中。
  • bisect 模块现在有一个底层的 C 实现,以提高性能。
  • 有一个新的 collections 模块,用于各种专门的集合数据类型。 目前它只包含一种类型,deque,一个双端队列,支持从任一端高效地添加和删除元素。
  • asyncore 模块的 loop() 现在有一个 count 参数,允许您执行有限次数的轮询循环传递。 默认值仍然是永远循环。
  • curses 模块现在支持 ncurses 扩展 use_default_colors()。 在终端支持透明度的平台上,这使得可以使用透明背景。
  • imaplib 现在支持 IMAP THREAD 命令
  • heapq 有两个新函数 nlargest() 和 nsmallest() 来查找数据集中 N 个最大或最小的值。
  • itertools 有一个新函数 groupby(),它的作用有点像 SQL "GROUP BY" 语句。 它还获得了一个函数 tee(),该函数返回 N 个独立的迭代器,它们复制作为参数传递的迭代器。
  • logging 包中添加了一个新函数 basicConfig(),以简化日志设置。 还有一个新的 TimedRotatingLogFileHandler,它以固定的间隔自动轮换日志文件。
  • operator 模块获得了函数 attrgetter() 和 itemgetter()
  • posix 模块(作为 os 可用)有一个新函数 getsid()
  • poplib 支持通过 SSL 的 POP
  • profile 现在可以分析 C 扩展函数
  • random 有一个新方法 getrandbits(N) 来返回一个 N 位长的随机整数。
  • 扩展了 re 模块,以允许在正则表达式中使用简单的条件表达式。 此外,底层 SRE 引擎现在是非递归的(以前,某些类型的正则表达式会遇到递归问题)。
  • weakref 模块现在支持更广泛的 Python 对象,包括 Python 函数、类实例、集合、冻结集合、双端队列、数组、文件、套接字和正则表达式对象。 此外,weakref 类型现在是一个可以子类化的新样式对象。
  • xmlrpclib 现在支持多调用扩展,用于在单个 HTTP 操作中传输多个 XML-RPC 调用。
  • base64 模块现在支持 Base64、Base32 和 Base16 编码和解码,以及更完整地支持 RFC 3548。