Python常见问题
什么是 python?
python 是一种解释性、交互式、面向对象的编程语言。 它包含了模块、异常、动态类型、非常高层级的动态数据类型以及类的概念。 python结合了超强的功能和极清晰的语法。 它带有许多系统调用和库以及各种窗口系统的接口,并且可以用 c 或 c ++ 来进行扩展。 它还可用作需要可编程接口的应用程序的扩展语言。 最后,python 还是可移植的:它可以在许多 unix 变种、mac 以及 windows 2000 以上的操作系统中运行。
要了解更多详情,请先查看 python 教程。 python 新手指南 提供了学习 python 的其他入门教程及资源的链接。
什么是 python 软件基金会?
python 软件基金会(python software foundation,简称 psf)是一个独立的非盈利组织,它拥有 python 2.1 及以上各版本的版权。 psf 的使命是推进与 python 编程语言相关的开源技术,并推广 python 的使用。 psf 的主页是 https://www.python.org/psf/。
向 psf 提供捐助在美国是免税的。 如果你在使用 python 并且感觉它对你很有帮助,可以通过 psf 捐助页 进行捐助。
使用 python 是否存在版权限制?
你可以任意使用源码,只要你保留版权信息并在你基于 python 的产品文档中显示该版权信息。 如果你遵守此版权规则,就可以将 python 用于商业领域,以源码或二进制码的形式(不论是否经过修改)销售 python 的副本,或是以某种形式包含了 python 的产品。 当然,我们仍然希望获知所有对 python 的商业使用。
请参阅 psf 许可页 以查看进一步的说明以及许可的完整文本内容的链接。
python 的徽标是注册商标,在某些情况下需要获得允许方可使用。 请参阅 商标使用政策 了解详情。
创造 python 的最初理由是什么?
以下是有关最初缘起的一份 非常 简短的摘要,由 guido van rossum 本人撰写:
我在 cwi 的 abc 部门时在实现解释型语言方面积累了丰富经验,通过与这个部门成员的协同工作,我学到了大量有关语言设计的知识。 这是许多 python 特性的最初来源,包括使用缩进来组织语句以及包含非常高层级的数据结构(虽然在 python 中具体的实现细节完全不同)。
我对 abc 语言有过许多抱怨,但同时也很喜欢它的许多特性。 没有可能通过扩展 abc 语言(或它的实现)来弥补我的不满 —— 实际上缺乏可扩展性就是它最大的问题之一。 我也有一些使用 modula-2+ 的经验,并曾与 modula-3 的设计者进行交流,还阅读了 modula-3 的报告。 modula-3 是 python 中异常机制所用语法和语义,以及其他一些语言特性的最初来源。
我还曾在 cwi 的 amoeba 分布式操作系统部门工作。 当时我们需要有一种比编写 c 程序或 bash 脚本更好的方式来进行系统管理,因为 amoeba 有它自己的系统调用接口,并且无法方便地通过 bash 来访问。 我在 amoeba 中处理错误的经验令我深刻地意识到异常处理在编程语言特性当中的重要地位。
我发现,某种具有 abc 式的语法而又能访问 amoeba 系统调用的脚本语言将可满足需求。 我意识到编写一种 amoeba 专属的语言是愚蠢的,所以我决定编写一种具有全面可扩展性的语言。
在 1989 年的圣诞假期中,我手头的时间非常充裕,因此我决定开始尝试一下。 在接下来的一年里,虽然我仍然主要用我的业余时间来做这件事,但 python 在 amoeba 项目中的使用获得了很大的成功,来自同事的反馈让我得以增加了许多早期的改进。
到 1991 年 2 月,经过一年多的开发,我决定将其发布到 usenet。 之后的事情就都可以在
misc/history
文件里面看了。
python 适合做什么?
python 是一种高层级的多用途编程语言,可用于解决许多不同门类的问题。
该语言附带一个庞大的标准库,涵盖了字符串处理(正则表达式,unicode,比较文件间的差异等),因特网协议(http,ftp,smtp,xml-rpc,pop,imap,cgi 编程等),软件工程(单元测试,日志记录,性能分析,python 代码解析等),以及操作系统接口(系统调用,文件系统,tcp/ip 套接字等)。 请查看 python 标准库 的目录以了解所有可用的内容。 此外还可以获取到各种各样的第三方扩展。 请访问 python 包索引 来查找你感兴趣的软件包。
python 版本的编号形式是怎样的?
python 版本的编号形式是 a.b.c 或 a.b。 a 称为大版本号 —— 它仅在对语言特性进行非常重大改变时才会递增。 b 称为小版本号,它会在语言特性发生较小改变时递增。 c 称为微版本号 —— 它会在每次发布问题修正时递增。 请参阅 pep 6 了解有关问题修正发布版的详情。
发布版本并非都是问题修正版本。 在新的主要发布版本开发过程中,还会发布一系列的开发版,它们以 alpha (a), beta (b) 或 release candidate (rc) 来标示。 其中 alpha 版是早期发布的测试版,它的接口并未最终确定;在两个 alpha 发布版本间出现接口的改变并不意外。 而 beta 版更为稳定,它会保留现有的接口,但也可能增加新的模块,release candidate 版则会保持冻结状态不会再进行改变,除非有重大问题需要修正。
以上 alpha, beta 和 release candidate 版本会附加一个后缀。 用于 alpha 版本的后缀是带有一个小数字 n 的 “an”,beta 版本的后缀是带有一个小数字 n 的“bn”,release candidate 版本的后缀是带有一个小数字 n 的“cn”。 换句话说,所有标记为 2.0an 的版本都早于标记为 2.0bn 的版本,后者又都早于标记为 2.0cn 的版本,而 这些版本 全都早于 2.0。
你还可能看到带有“+”后缀的版本号,例如“2.2+”。 这表示未发布版本,直接基于 cpython 开发代码仓库构建。 在实际操作中,当一个小版本最终发布后,未发布版本号会递增到下一个小版本号,成为“a0”版本,例如“2.4a0”。
另请参阅 sys.version
, sys.hexversion
以及 sys.version_info
的文档。
我应如何获取一份 python 源代码的副本?
最新的 python 发布版源代码总能从 python.org 获取,下载页链接为 https://www.python.org/downloads/。 最新的开发版源代码可以在 https://github.com/python/cpython/ 获取。
发布版源代码是一个以 gzip 压缩的 tar 文件,其中包含完整的 c 源代码、sphinx 格式的文档、python 库模块、示例程序以及一些有用的*分发软件。 该源代码将可在大多数 unix 类平台上直接编译并运行。
请参阅 python 开发者指南的初步上手部分 了解有关获取源代码并进行编译的更多信息。
我应如何获取 python 的文档?
当前的 python 稳定版本的标准文档可在 https://docs.python.org/3/ 查看。 也可在 https://docs.python.org/3/download.html 获取pdf、纯文本以及可下载的 html 版本。
文档以 restructuredtext 格式撰写,并使用 sphinx 文档工具 生成。 文档的 restructuredtext 源文件是 python 源代码发布版的一部分。
我之前从未接触过编程。 哪里有 python 的教程?
有许多可选择的教程和书籍。 标准文档中也包含有 python 教程。
请参阅 新手指南 以获取针对 python 编程初学者的信息,包括教程的清单。
是否有专门针对 python 的新闻组或邮件列表?
有一个新闻组 comp.lang.python 和一个邮件列表 python-list。 新闻组和邮件列表是彼此互通的 —— 如果你可以阅读新闻就不必再订阅邮件列表。 comp.lang.python 的流量很大,每天会收到数以百计的发帖,usenet 使用者通常更擅长处理这样大的流量。
有关新软件发布和活动的公告可以在 comp.lang.python.announce 中找到,这是个严格管理的低流量列表,每天会收到五个左右的发帖。 可以在 python 公告邮件列表 页面进行订阅。
有关其他邮件列表和新闻组的更多信息可以在 https://www.python.org/community/lists/ 找到。
我应如何获取 python 的公开测试版本?
可以从 https://www.python.org/downloads/ 下载 alpha 和 beta 发布版。 所有发布版都会在 comp.lang.python 和 comp.lang.python.announce 新闻组以及 python 主页 https://www.python.org/ 上进行公告;并会推送到 rss 新闻源。
你还可以通过 git 访问 python 的开发版。 请参阅 python 开发者指南 了解详情。
我应如何为 python 提交错误报告和补丁?
要报告错误或提交补丁,请使用安装于 https://bugs.python.org/ 上的 roundup。
你必须拥有一个 roundup 账号才能报告错误;这样我们就可以在有后续问题时与你联系。 这也使得 roundup 能在我们处理所报告的错误时向你发送更新消息。 如果你之前使用过 sourceforge 向 python 报告错误,你可以通过 roundup 的 密码重置操作 来获取你的 roundup 密码。
有关 python 开发流程的更多信息,请参阅 python 开发者指南。
是否有任何公开发表的 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 基础架构团队负责管理。 详情请访问 这里。
为何命名为 python?
在着手编写 python 实现的时候,guido van rossum 同时还阅读了刚出版的 "monty python 的飞行马戏团" 剧本,这是一部自 1970 年代开始播出的 bbc 系列喜剧。 van rossum 觉得他需要选择一个简短、独特而又略显神秘的名字,于是他决定将这个新语言命名为 python。
我必须喜欢 "monty python 的飞行马戏团" 吗?
不必,但这对学习会有帮助。 :)