Python 有多稳定?
非常稳定。 自 1991 年起大约每隔 6 到 18 个月就会推出新的稳定发布版,这种状态看来还将持续下去。 目前主要发布版本的间隔通常为 18 个月左右。
开发者也会推出旧版本的“问题修正”发布版,因此现有发布版的稳定性还会逐步提升。 问题修正发布版会以版本号第三部分的数字来标示(例如 3.5.3, 3.6.2),用于稳定性的管理;只有对已知问题的修正会包含在问题修正发布版中,同一系列的问题修正发布版中的接口确定将会始终保持一致。
最新的稳定版本总是可以在 Python下载页面 上找到。有两个生产环境可用版本的 Python : 2.x 和 3.x 。 推荐的版本是 3.x ,大多数广泛使用的库都支持它。虽然 2.x 仍然被广泛使用,但它将在2020年1月1日之后不再维护 <https://www.python.org/dev/peps/pep-0373/>`_ 。
有多少人在使用 Python?
使用者的数量肯定非常庞大,不过想要进行精确统计则是相当困难的。
Python 可以免费下载,因此并不存在销量数据,此外它也可以从许多不同网站获取,并且包含于许多 Linux 发行版之中,因此下载量统计同样无法完全说明问题。
comp.lang.python 新闻组非常活跃,但不是所有 Python 用户都会在新闻组发帖,许多人甚至不会阅读新闻组。
有哪些重要的项目是用 Python 开发的?
请访问 https://www.python.org/about/success 查看使用了 Python 的项目列表。 阅览 历次 Python 会议 的日程纪要可以看到许多不同公司和组织所做的贡献。
高水准的 Python 项目包括 Mailman 邮件列表管理器 和 Zope 应用服务器。 多个 Linux 发行版,其中最著名的有 Red Hat 均已使用 Python 来编写部分或全部的安装程序和系统管理软件。 在内部使用 Python 的大公司包括了 Google, Yahoo 以及 Lucasfilm 等。
在未来可以期待 Python 将有什么新进展?
请访问 https://www.python.org/dev/peps/ 查看 Python 增强提议(PEP)。 PEP 是为 Python 加入某种新特性的提议进行描述的设计文档,其中会提供简明的技术规格说明与基本原理。 可以查找标题为“Python X.Y Release Schedule”的 PEP,其中 X.Y 是某个尚未公开发布的版本。
新版本的开发会在 python-dev 邮件列表 中进行讨论。
提议对 Python 加入不兼容的更改是否合理?
通常来说是不合理的。 世界上已存在的 Python 代码数以亿计,因此,任何对该语言的更改即便仅会使得现有程序中极少的一部分失效也是难以令人接受的。 就算你可以提供一个转换程序,也仍然存在需要更新全部文档的问题;另外还有大量已出版的Python 书籍,我们不希望让它们在一瞬间全部变成废纸。
如果必须更改某个特性,则应该提供渐进式的升级路径。 PEP 5 描述了引入向后不兼容的更改所需遵循的流程,以尽可能减少对用户的干扰。
Python 是一种对编程初学者友好的语言吗?
当然。
从过程式、静态类型的编程语言例如 Pascal, C 或者 C++ 以及 Java 的某一子集开始引导学生入门仍然是常见的做法。 但以 Python 作为第一种编程语言进行学习对学生可能更有利。Python 具有非常简单和一致的语法和庞大的标准库,而且最重要的是,在编程入门教学中使用 Python 可以让学生专注于更重要的编程技能,例如问题分解与数据类型设计。 使用 Python,可以快速向学生介绍基本概念例如循环与过程等。 他们甚至有可能在第一次课里就开始接触用户自定义对象。
对于之前从未接触过编程的学生来说,使用静态类型语言会感觉不够自然。 这会给学生带来必须掌握的额外复杂性,并减慢教学的进度。 学生需要尝试像计算机一样思考,分解问题,设计一致的接口并封装数据。 虽然从长远来看,学习和使用一种静态类型语言是很重要的,但这并不是最适宜在学生的第一次编程课上就进行探讨的主题。
还有许多其他方面的特点使得 Python 成为很好的入门语言。 像 Java 一样,Python 拥有一个庞大的标准库,因此可以在课程非常早期的阶段就给学生布置一些 实用 的编程项目。 编程作业不必仅限于标准四则运算和账目检查程序。 通过使用标准库,学生可以在学习编程基础知识的同时开发真正的应用,从而获得更大的满足感。 使用标准库还能使学生了解代码重用的概念。 而像 PyGame 这样的第三方模块同样有助于扩大学生的接触领域。
Python 的解释器使学生能够在编程时测试语言特性。 他们可以在一个窗口中输入程序源代码的同时开启一个解释器运行窗口。 如果他们不记得列表有哪些方法,他们这以这样做:
>>>
>>> L = []
>>> dir(L)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
>>> [d for d in dir(L) if '__' not in d]
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> help(L.append)
Help on built-in function append:
append(...)
L.append(object) -> None -- append object to end
>>> L.append(1)
>>> L
[1]
通过使用解释器,学生编写程序时参考文档总是能伴随在他们身边。
Python 还拥有很好的 IDE。 IDLE 是一个跨平台的 Python IDE,它基于 Tkinter 库,使用 Python 语言编写。 PythonWin 是一个 Windows 专属的 IDE。 Emacs 用户将高兴地了解到 Emacs 具有非常好的 Python 模式。 所有这些编程环境都提供语法高亮,自动缩进以及在编写代码时使用交互式解释器等功能。 请访问 Python wiki 查看 Python 编程环境的完整列表。
如果你想要讨论 Python 在教育中的使用,你可能会有兴趣加入 edu-sig 邮件列表。