通用python常见问题解答

一般信息

什么是Python?

Python是一种解释的、交互式的、面向对象的编程语言。它包含模块、异常、动态类型、非常高级的动态数据类型和类。它支持面向对象编程以外的多种编程模式,如过程编程和函数编程。Python结合了卓越的功能和非常清晰的语法。它与许多系统调用和库以及各种窗口系统有接口,并且在C或C++中是可扩展的。它也可用作需要可编程接口的应用程序的扩展语言。最后,Python是可移植的:它运行在许多Unix变体上,包括Linux和macOS,以及Windows上。

要了解更多信息,请从 python教程 . 这个 Beginner's Guide to Python 链接到其他用于学习Python的入门教程和资源。

什么是Python软件基金会?

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

对PSF的捐赠在美国是免税的。如果您使用python并发现它有帮助,请通过 the PSF donation page .

为什么首先创建了python?

这里有一个 very 由Guido van Rossum撰写的《最初是什么》摘要:

我在CWI的ABC小组中有丰富的实践经验,并且通过与这个小组合作,我学到了很多关于语言设计的知识。这是许多Python特性的起源,包括使用缩进进行语句分组和包含非常高级别的数据类型(尽管在Python中细节都不同)。

我对ABC语言有很多不满,但也类似于它的许多特性。扩展ABC语言(或它的实现)来弥补我的抱怨是不可能的——事实上,它缺乏可扩展性是它最大的问题之一。我有一些使用modula-2+的经验,并与modula-3的设计者进行了交谈,阅读modula-3报告。modula-3是用于异常和其他一些Python特性的语法和语义的起源。

我在CWI的阿米巴分布式操作系统组工作。我们需要一种比编写C程序或BourneShell脚本更好的系统管理方法,因为阿米巴有自己的系统调用接口,从BourneShell很难访问。我在阿米巴错误处理方面的经验使我敏锐地意识到异常作为编程语言特性的重要性。

我突然想到一种脚本语言,它的语法类似于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标准库 了解可用的内容。还提供多种第三方扩展。咨询 the Python Package Index 找到你感兴趣的包裹。

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

python版本的编号是a.b.c或a.b。a是主要的版本号——它只对语言中真正重要的更改递增。B是次要版本号,随着震撼人心的变化而增加。C是微级别——对于每个bugfix版本,它都是递增的。见 PEP 6 有关错误修复版本的详细信息。

并非所有版本都是错误修复版本。在新的主要版本的准备过程中,会生成一系列开发版本,称为alpha、beta或发布候选版本。alpha s是早期版本,其中的接口还没有最终确定;看到两个alpha版本之间的接口更改并不是意料之中的。beta更稳定,保留现有的接口,但可能添加新的模块,并且候选版本被冻结,除了需要修复关键的错误外,不做任何更改。

Alpha、beta和release候选版本有一个附加的后缀。alpha版本的后缀是“an”,对于一些小数字N,beta版本的后缀是“bN”,对于某个小数字N,发布候选版本的后缀是“rcN”。换句话说,所有标记为2.0aN的版本都在标记为2.0rcN的版本之前,标记为2.0aN的版本位于标记为2.0rcN的版本之前,并且 那些 先于2。

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

另请参见文档 sys.versionsys.hexversionsys.version_info .

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

最新的python源代码分发始终可以从python.org获得,网址为https://www.python.org/downloads/。最新的开发源可以在https://github.com/python/cpython/上获得。

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

咨询 Getting Started section of the Python Developer's Guide _有关获取源代码和编译源代码的详细信息。

如何获得关于python的文档?

当前稳定版本的python的标准文档可以在https://docs.python.org/3/上找到。PDF、纯文本和可下载的HTML版本也可以在https://docs.python.org/3/download.html上找到。

文档以restructuredtext编写,并由 the Sphinx documentation tool ②文档的reStructuredText源是Python源代码分发的一部分。

我以前从未编程过。有关于python的教程吗?

有许多教程和书籍可供选择。标准文件包括 python教程 .

查阅 the Beginner's Guide 为开始使用Python的程序员查找信息,包括教程列表。

是否有专门针对python的新闻组或邮件列表?

有一个新闻组, comp.lang.python 和邮件列表, python-list . 新闻组和邮件列表是通过网关互相连接的——如果你能阅读新闻,就不需要订阅邮件列表。 comp.lang.python 是高流量,每天接收数百个帖子,而usenet读者往往更能应付这一卷。

新软件版本和事件的公告可以在comp.lang.python.announce中找到,这是一个低流量的缓和列表,每天接收大约五个公告。它可作为 the python-announce mailing list .

有关其他邮件列表和新闻组的更多信息,请访问https://www.python.org/community/lists/。

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

alpha和beta版本可从https://www.python.org/downloads/获得。所有版本都在comp.lang.python和comp.lang.python.announce新闻组和python主页(https://www.python.org/)上发布;提供新闻的RSS源。

您还可以通过git访问Python的开发版本。见 The Python Developer's Guide 有关详细信息。

如何提交针对python的bug报告和补丁?

要报告错误或提交补丁,请使用位于https://bugs.python.org/的Roundup安装。

您必须有一个汇总帐户来报告Bug;这使得我们可以在有后续问题时与您联系。它还允许Roundup在我们处理您的bug时向您发送更新。如果以前使用sourceforge向python报告bug,则可以通过roundup的 password reset procedure .

有关如何开发python的详细信息,请参阅 the Python Developer's Guide .

有没有关于python的已发表文章可以参考?

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

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

Guido van Rossum和Jelke de Boer,“使用Python编程语言交互式测试远程服务器”,《CWI季刊》,第4卷,第4期(1991年12月),阿姆斯特丹,第283-303页。

有关于 Python 的书吗?

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

您还可以在网上书店中搜索“python”,过滤掉monty python引用;或者搜索“python”和“language”。

www.python.org位于世界何处?

python项目的基础设施位于世界各地,由python基础设施团队管理。细节 here _.

为什么叫 Python ?

当他开始实现python时,guido van rossum也在阅读《蒙提.派森干的飞行马戏团》<https://en.wikipedia.org/wiki/Monty_Python>`_ _这是上世纪70年代英国广播公司的一部喜剧系列,范罗森认为他需要一个简短、独特且略显神秘的名字,所以他决定称之为 Python 。

我必须喜欢《蒙提.派森干的飞行马戏团》吗?

不,但有帮助。:)

现实世界中的 Python

Python 有多稳定?

非常稳定。自1991年以来,大约每6到18个月就会有新的、稳定的版本发布,而且这种情况似乎还会持续下去。从3.9版开始,Python每12个月就会有一个新的主要版本 (PEP 602

开发人员发布旧版本的“错误修复”版本,因此现有版本的稳定性逐渐提高。bugfix版本由版本号的第三个组件(如3.5.3、3.6.2)指示,用于管理稳定性;bugfix版本中只包含对已知问题的修复,并保证在一系列bugfix版本中接口保持不变。

最新的稳定版本可以在 Python download page . python有两个可生产的版本:2.x和3.x。推荐的版本是3.x,这是最广泛使用的库所支持的。虽然2.x仍然被广泛使用, it is not maintained anymore .

有多少人在使用python?

可能有数百万的用户,尽管很难获得确切的数字。

python可以免费下载,因此没有销售数据,而且它可以从许多不同的站点下载,并与许多Linux发行版打包在一起,所以下载统计数据也不能说明全部情况。

python新闻组非常活跃,但并不是所有的python用户都发布到该组,甚至阅读它。

有没有在python中完成过重要的项目?

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

高调的python项目包括 the Mailman mailing list managerthe Zope application server . 几个Linux发行版,最显著的是 Red Hat 已经用python编写了部分或全部安装程序和系统管理软件。内部使用python的公司包括谷歌、雅虎和Lucasfilm有限公司。

将来,Python会有哪些新的发展?

参见https://www.python.org/dev/peps/了解python增强建议(peps)。PEPS是描述针对Python的一个建议的新特性的设计文档,提供了一个简洁的技术规范和基本原理。寻找一个名为“python x.y发布时间表”的PEP,其中x.y是尚未公开发布的版本。

讨论了新的发展 the python-dev mailing list .

建议对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]

有了解释器,文档就永远不会离学生远,因为他们正在编程。

还有很好的Python IDE。idle是一个针对Python的跨平台IDE,使用tkinter用Python编写。pythonwin是一个特定于Windows的IDE。Emacs用户很高兴知道Emacs有一个非常好的python模式。所有这些编程环境都提供语法高亮显示、自动缩进以及在编码时访问交互式解释器。查阅 the Python wiki 完整的python编辑环境列表。

如果您想讨论python在教育中的用途,您可能会有兴趣加入 the edu-sig mailing list .