Skip to main content

一般Python常见问题

一般信息

什么是Python?

Python是一种解释,交互,面向对象的编程语言。它包含模块,异常,动态类型,非常高级的动态数据类型和类。 Python结合了非凡的力量和非常清晰的语法。它具有许多系统调用和库的接口,以及各种窗口系统,并且可扩展为C或C++。它还可用作需要可编程接口的应用程序的扩展语言。最后,Python是可移植的:它运行在许多Unix版本上,在Mac上,在Windows 2000和更高版本。

要了解更多,从 Python教程 开始。 Python初学者指南 链接到其他介绍性教程和学习Python的资源。

什么是Python软件基金会?

Python软件基金会是一个独立的非营利组织,拥有Python版本2.1及更高版本的版权。 PSF的使命是推进与Python编程语言相关的开源技术,并宣传Python的使用。 PSF的主页在 https://www.python.org/psf/

对PSF的捐赠在美国是免税的。如果你使用Python并发现它有帮助,请通过 PSF捐赠页面 贡献。

为什么Python创建在第一位?

这里是一个 very 简要介绍了什么开始它所有,由Guido van Rossum写:

我在CWI的ABC小组实施一个解释性语言方面有丰富的经验,并且从与这个小组合作我学到了很多关于语言设计。这是许多Python功能的起源,包括使用缩进语句分组和包含非常高级别的数据类型(虽然细节在Python中有所不同)。

我有一些关于ABC语言的困惑,但也喜欢它的许多功能。不可能扩展ABC语言(或其实现)来补救我的投诉 - 事实上其缺乏可扩展性是其最大的问题之一。我有一些使用Modula-2 +的经验,并与Modula-3的设计师谈过并阅读Modula-3报告。 Modula-3是用于异常的语法和语义的起源,以及一些其他Python特性。

我在CWI的Amoeba分布式操作系统组工作。我们需要一个更好的方法来做系统管理,而不是编写C程序或Bourne shell脚本,因为Amoeba有自己的系统调用接口,这是不容易从Bourne shell访问。我在阿摩巴的错误处理的经验使我敏锐地意识到异常作为一个编程语言功能的重要性。

我发现一个脚本语言与ABC语法,但访问的Amoeba系统调用将满足的需要。我意识到写一个阿摩巴语言是愚蠢的,所以我决定我需要一种通常可扩展的语言。

在1989年的圣诞节假期,我有很多时间在我的手,所以我决定试一试。在接下来的一年里,虽然仍然主要在自己的时间工作,Python在Amoeba项目中使用越来越成功,同事的反馈使我添加了很多早期的改进。

1991年2月,经过一年多的发展,我决定在USENET上岗。其余的在 Misc/HISTORY 文件中。

什么是Python有用?

Python是一种高级通用编程语言,可应用于许多不同类型的问题。

该语言有一个大的标准库,包括字符串处理(正则表达式,Unicode,文件之间的计算差异),Internet协议(HTTP,FTP,SMTP,XML-RPC,POP,IMAP,CGI编程),软件工程(单元测试,日志记录,分析,解析Python代码)和操作系统接口(系统调用,文件系统,TCP/IP套接字)。查看 Python标准库 的目录,了解可用的内容。还提供各种第三方扩展。请咨询 Python包索引 以寻找您感兴趣的套餐。

Python版本编号方案如何工作?

Python版本编号为A.B.C或A.B. A是主要版本号 - 它只对语言中的真正重大更改增加。 B是次要版本号,增加了较少的破碎更改。 C是微级别 - 它是每个bugfix版本增加。有关bugfix版本的更多信息,请参阅 PEP 6

并不是所有的版本都是bugfix版本。在一个新的主要版本的运行中,进行了一系列开发版本,表示为alpha,beta或发布候选。 Alphas是早期版本,其中接口尚未最终确定;在两个alpha版本之间看到接口更改并不意外。 Betas更稳定,保留现有接口,但可能添加新模块,并且发布候选者被冻结,除非需要修复关键错误,否则不做任何更改。

Alpha,beta和发布候选版本有一个附加后缀。对于一些小数字N,alpha版本的后缀是“aN”,对于一些小数字N,beta版本的后缀是“bN”,对于一些小数字N,发布候选版本的后缀是“cN”。换句话说,标记为2.0aN的所有版本都在标记为2.0bN的版本之前,标记为2.0cN的版本之前,those 的版本先于2.0。

您还可以找到带有“+”后缀的版本号,例如“2.2+”。这些是未发布的版本,直接从CPython开发库构建。实际上,在进行最后的次要版本之后,版本增加到下一次要版本,其变成“a0”版本,例如。 “2.4a0”。

另请参阅 sys.versionsys.hexversionsys.version_info 的文档。

如何获取Python源代码的副本?

最新的Python源代码分发始终可以从python.org在 https://www.python.org/downloads/ 获得。最新的开发源可以通过在 https://hg.python.org/cpython 的匿名Mercurial访问获得。

源分发是一个gzip压缩tar文件,包含完整的C源代码,Sphinx格式的文档,Python库模块,示例程序和几个有用的可自由分发的软件。源代码将在大多数UNIX平台上编译和运行。

有关获取源代码和编译它的更多信息,请咨询 Python开发人员指南的入门部分

如何获取有关Python的文档?

当前稳定版本的Python的标准文档可在 https://docs.python.org/3/ 获得。 PDF,纯文本和可下载的HTML版本也可在 https://docs.python.org/3/download.html 获得。

文档编写在reStructuredText中并由 Sphinx文档工具 处理。文档的reStructuredText源是Python源代码分发的一部分。

我从来没有编程过。有Python教程吗?

有许多教程和书籍。标准文档包括 Python教程

请咨询 新手指南“ 以查找开始Python程序员的信息,包括教程列表。

是否有专门用于Python的新闻组或邮件列表?

有一个新闻组,comp.lang.python 和一个邮件列表,python列表。新闻组和邮件列表相互关联 - 如果您可以阅读新闻,则无需订阅邮件列表。 comp.lang.python 是高流量,每天接收数百篇帖子,Usenet读者通常更能应付这一卷。

有关新软件版本和事件的公告可在comp.lang.python.announce中找到,这是一个低流量的审核列表,每天接收大约5个帖子。它可作为 python-announce邮件列表

有关其他邮寄名单和新闻组的更多信息,请访问 https://www.python.org/community/lists/

如何获得Python的beta测试版本?

Alpha和beta版本可从 https://www.python.org/downloads/ 获得。所有版本都在comp.lang.python和comp.lang.python.announce新闻组以及在 https://www.python.org/ 的Python主页上公布;可以获得新闻的RSS源。

您还可以通过Mercurial访问Python的开发版本。有关详细信息,请参阅 https://docs.python.org/devguide/faq.html

如何提交Python的错误报告和补丁?

要报告错误或提交修补程序,请使用 https://bugs.python.org/ 上的“汇总”安装。

您必须有一个Roundup帐户才能报告错误;这使我们可以与您联系,如果我们有后续问题。它还将使Roundup能够向您发送更新,当我们对您的错误采取行动。如果您以前使用SourceForge向Python报告错误,您可以通过Roundup的 密码重置程序 获取您的Roundup密码。

有关Python如何开发的更多信息,请咨询 Python开发人员指南

有没有关于Python的任何已发表的文章,我可以参考?

这可能是最好引用你最喜欢的书关于Python。

关于Python的第一篇文章是在1991年写的,现在已经过时了。

Guido van Rossum和Jelke de Boer,“Interactively Testing Remote Servers Using the Python Programming Language”,CWI Quarterly,第4卷,第4期(1991年12月),Amsterdam,第283- 303页。

有没有关于Python的书?

是的,有很多,还有更多的正在出版。请参阅python.org wiki在 https://wiki.python.org/moin/PythonBooks 的列表。

您还可以在网上书店搜索“Python”,并过滤出Monty Python引用;或者可能搜索“Python”和“language”。

在世界上哪里是www.python.org位于?

Python项目的基础设施遍布世界各地。 www.python.orgRackspace 主持,由 快速 提供CDN缓存。 前端系统 宿主 bugs.python.org。许多其他Python服务(如 维基)由 俄勒冈州立大学开源实验室 托管。

为什么叫Python?

当他开始实现Python时,Guido van Rossum也正在阅读从20世纪70年代的BBC喜剧系列的 “蒙蒂Python的飞马戏” 发表的剧本。 Van Rossum认为他需要一个简短,独特,略带神秘的名字,所以他决定称之为Python语言。

Python在现实世界中

Python有多稳定?

非常稳定。自1991年以来,新的,稳定的版本大约每6至18个月出现一次,这似乎可能继续。目前主要版本之间通常有18个月左右。

开发人员发布旧版本的“bugfix”版本,因此现有版本的稳定性会逐渐提高。由版本号的第三部分(例如2.5.3,2.6.2)指示的Bugfix版本被管理用于稳定性;只有对已知问题的修复包括在bugfix版本中,并且保证接口在一系列bugfix版本中保持不变。

最新的稳定版本总是可以在 Python下载页面 上找到。在这个时间点有两个推荐的生产就绪版本,因为目前有两个稳定版本的分支:2.x和3.x. Python 3.x可能比2.x不太有用,因为目前有更多的第三方软件可用于Python 2而不是Python 3. Python 2代码通常不会在Python 3中不变地运行。

有多少人在使用Python?

可能有成千上万的用户,虽然很难获得确切的计数。

Python可以免费下载,所以没有销售数字,它可以从许多不同的网站,并与许多Linux发行版打包,所以下载统计数据也不能告诉整个故事。

comp.lang.python新闻组非常活跃,但不是所有的Python用户发布到组,甚至阅读它。

有没有任何重要的项目在Python?

有关使用Python的项目列表,请参阅 https://www.python.org/about/success。咨询 过去的Python会议 的程序将揭示来自许多不同的公司和组织的贡献。

高调的Python项目包括 邮件列表管理器Zope应用程序服务器。几个Linux发行版,最着名的是 红帽,已经在Python中编写了它们的部分或全部安装程序和系统管理软件。在内部使用Python的公司包括Google,Yahoo和Lucasfilm Ltd.

Python将来会有什么新的发展?

有关Python增强提议(PEP),请参阅 https://www.python.org/dev/peps/。 PEP是描述Python的建议新特性的设计文档,提供简明的技术规范和理由。寻找一个名为“Python X.Y发布计划”的PEP,其中X.Y是尚未公开发布的版本。

python-dev邮件列表 讨论了新的发展。

对Python提出不兼容的更改是否合理?

一般来说,没有。世界上已经有数以百万计的Python代码行,所以任何对现有程序的非常小部分无效的语言的改变都必须被拒绝。即使您可以提供转换程序,仍然有更新所有文档的问题;许多书已经写了关于Python,我们不想使它们全部无效。

如果必须改变特征,则提供逐渐升级路径是必要的。 PEP 5 描述了引入后向不兼容更改所遵循的过程,同时最小化用户的中断。

Python是开始程序员的好语言吗?

是。

使用程序性和静态类型语言(如Pascal,C或C++或Java的子集)来启动学生仍然是常见的。学生可以通过学习Python作为他们的第一语言更好地服务。 Python有一个非常简单和一致的语法和一个大标准库,最重要的是,在开始的编程课程中使用Python让学生集中精力在重要的编程技能,如问题分解和数据类型设计。使用Python,学生可以快速介绍基本概念,如循环和过程。他们甚至可能在第一个课程中使用用户定义的对象。

对于以前从未编程的学生,使用静态类型的语言似乎不自然。它提出了额外的复杂性,学生必须掌握和减慢课程的速度。学生们正试图学会像电脑一样思考,分解问题,设计一致的接口,并封装数据。虽然学习使用静态类型语言在长期是重要的,但它不一定是在学生的第一个编程课程解决的最好的话题。

Python的许多其他方面使它成为一个好的第一语言。像Java一样,Python有一个大标准库,以便学生可以在 do 的早期课程中分配编程项目。分配不限于标准的四功能计算器和检查平衡程序。通过使用标准库,学生可以获得满意的工作在现实的应用程序,因为他们学习编程的基础。使用标准库还教学生关于代码重用。第三方模块如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]

使用解释器,文档从编程的角度来看远离学生。

还有很好的IDE的IDE。 IDLE是一个用Python编写的跨平台IDE,使用Tkinter编写。 PythonWin是一个特定于Windows的IDE。 Emacs用户将很高兴地知道,有一个非常好的Python模式的Emacs。所有这些编程环境提供语法高亮,自动缩进,以及在编码时访问交互式解释器。有关Python编辑环境的完整列表,请咨询 Python wiki

如果你想讨论Python在教育中的用途,你可能有兴趣加入 edu-sig邮件列表