General Python FAQ

General Information

什么是 Python?

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

要了解详情,请从The Python Tutorial开始。Python新手指南链接到用于学习Python的其他入门教程和资源。

What is the Python Software Foundation?

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

对PSF的捐赠在美国是免税的。如果您使用Python并发现有用,请通过PSF捐款页提供帮助。

Why was Python created in the first place?

这里有一个非常的简要总结,由Guido van Rossum写的:

I had extensive experience with implementing an interpreted language in the ABC group at CWI, and from working with this group I had learned a lot about language design. This is the origin of many Python features, including the use of indentation for statement grouping and the inclusion of very-high-level data types (although the details are all different in Python).

I had a number of gripes about the ABC language, but also liked many of its features. It was impossible to extend the ABC language (or its implementation) to remedy my complaints – in fact its lack of extensibility was one of its biggest problems. I had some experience with using Modula-2+ and talked with the designers of Modula-3 and read the Modula-3 report. Modula-3 is the origin of the syntax and semantics used for exceptions, and some other Python features.

I was working in the Amoeba distributed operating system group at CWI. We needed a better way to do system administration than by writing either C programs or Bourne shell scripts, since Amoeba had its own system call interface which wasn’t easily accessible from the Bourne shell. My experience with error handling in Amoeba made me acutely aware of the importance of exceptions as a programming language feature.

It occurred to me that a scripting language with a syntax like ABC but with access to the Amoeba system calls would fill the need. I realized that it would be foolish to write an Amoeba-specific language, so I decided that I needed a language that was generally extensible.

During the 1989 Christmas holidays, I had a lot of time on my hand, so I decided to give it a try. During the next year, while still mostly working on it in my own time, Python was used in the Amoeba project with increasing success, and the feedback from colleagues made me add many early improvements.

In February 1991, after just over a year of development, I decided to post to USENET. The rest is in the Misc/HISTORY file.

What is Python good for?

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

该语言有一个大的标准库,包括字符串处理(正则表达式,Unicode,文件之间的计算差异),Internet协议(HTTP,FTP,SMTP,XML-RPC,POP,IMAP,CGI编程),软件工程(单元测试,日志记录,分析,解析Python代码)和操作系统接口(系统调用,文件系统,TCP / IP套接字)。Look at the table of contents for The Python Standard Library to get an idea of what’s available. 还提供各种第三方扩展。请参阅Python包索引以查找您感兴趣的包。

How does the Python version numbering scheme work?

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

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

Alpha,Beta和发布候选版本有一个额外的后缀。对于一些小数字N,alpha版本的后缀是“aN”,对于一些小数字N,beta版本的后缀是“bN”,对于一些小数字N,发布候选版本的后缀是“cN”。换句话说,标记为2.0aN的所有版本在标记为2.0bN的版本之前,其先于标记为2.0cN的版本,并且那些优先于2.0。

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

另见sys.versionsys.hexversionsys.version_info的文档。

How do I obtain a copy of the Python source?

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

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

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

How do I get documentation on Python?

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

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

I’ve never programmed before. Is there a Python tutorial?

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

请参阅新手指南查找初始Python程序员的信息,包括教程列表。

Is there a newsgroup or mailing list devoted to Python?

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

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

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

How do I get a beta test version of Python?

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

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

How do I submit bug reports and patches for Python?

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

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

有关Python如何开发的详细信息,请参阅Python开发人员指南

Are there any published articles about Python that I can reference?

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

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

Guido van Rossum and Jelke de Boer, “Interactively Testing Remote Servers Using the Python Programming Language”, CWI Quarterly, Volume 4, Issue 4 (December 1991), Amsterdam, pp 283-303.

Are there any books on Python?

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

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

Where in the world is www.python.org located?

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

Why is it called Python?

当他开始实施Python时,Guido van Rossum也在阅读从“Monty Python's Flying Circus”发表的剧本,这是一部来自20世纪70年代的BBC喜剧节目。Van Rossum认为他需要一个简短,独特,略带神秘的名字,所以他决定称之为Python语言。

Python in the real world

How stable is Python?

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

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

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

How many people are using Python?

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

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

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

Have any significant projects been done in Python?

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

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

What new developments are expected for Python in the future?

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

新的开发在python-dev邮件列表中讨论。

Is it reasonable to propose incompatible changes to Python?

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

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

Is Python a good language for beginning programmers?

是。

使用程序性和静态类型语言(如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]

使用解释器,学生编程的时候可以便利的获取文档。

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

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