oop 简单、慢-

Python 的开发和支持是怎样的?

作为一个流行的开源系统, Python 享有一个很大而且活跃的开发社区,它以令许多商业软件开发人员感到惊讶的速度回应着需要解决的问题和开发增强项。Python 开发者通过一个源控制系统在线协同工作。更改是通过一个正式协议来开发的,它包含编写一个 PEP(Python 增强提案)或其他文档,和对 Python 回归测试系统的扩展。事实上,今天修改 Python 大致就像更改商业软件一样复杂。这和 Python 早期是非常不同的,在那时,一封给原作者的 email 就足够了,但考虑到它现在这么大的用户基数,这是一件好事。 PSF (Python 软件基金会),一个正式的非盈利小组,组织会议并处理知识产权问题。全世界举办了许多 Python 会议。 O’ Reilly 的 OSCON 和 PSF 的 PyCon 是最大的。前者处理多个开源项目,后者是 一个 Python 专有事件,它在最近这些年经历了巨大的增长。PyCon 在 2012 和 2013 分别达到了 2500 个参会人。事实上, PyCon 2013 年不得把它的上限定在到这个数,因为在 2012 年门票意外售罄了(并且成功的因技术上和非技术的原因获得了广泛的关注,这些原因我就不在这里赘述了)。更早些年参会人数通常翻倍增长,比如,从 2007 年 586 个参会人,到 2008 年超过 1000 个。 这大致显示了 Python 的成长,并让那些还记得早期会议的人印象深刻,因为那时的参会人(很少)只能坐满餐厅里一个桌子。 本文章首发在 LearnKu.com 网站上。

上一篇下一篇

Markdown 文本

纠错改进

Python 的开发和支持是怎样的?—— 开源的妥协

话虽如此,重要的是要注意到虽然 Python 享有一个积极的开发社区,但这仍然伴随固有的妥协。有时开源软件也会显得混乱,甚至类似无组织,并且可能并不总是像前面段落暗示的那样实现得那么顺利。一些更改可能仍然成功的挑战官方协议。就像在所有人类的活动中,尽管有过程控制存在,错误仍然发生(比如 Python 3.2.0 在 windows 平台上就带有一个无法正常工作的控制台 input 函数) 而且,开源项目放弃了商业利益而转向当前这组开发者的个人偏好,这些偏好可能和你的一样,也可能不一样。你并没有被一个公司强迫做什么事,但是你容易受到那些用业余时间来改变系统的人的影响。最终的效果就是开源软件的进化通常被少数人驱动,但强加给多数人。 然而,事实上妥协对那些使用最新版本的人的影响要比对那些使用稳定版本的人的影响要大得多。这些稳定版本包括在 Python 3.X 和 2.X 线中的之前的版本。比如,如果你一直使用 Python 2.X 中的经典类,那你几乎不会受到在 21 世纪前十年的中早期出现的新式的类中大量出现的类功能和改变的影响。虽然这些类功能和改变(还有其他许多变更)在 3.X 里面变成强制的,但现在许多 2.X 的用户仍然开心地避开这个问题。 本文章首发在 LearnKu.com 网站上。

上一篇下一篇

Markdown 文本

纠错改进

Python 的技术优势是什么?

很自然,这是一个开发者的问题。如果你还没有编程背景,那么下面几个章节中的语言可能就有一点难理解 —— 但是不要担心,在学习这本书的过程中,我们将会更深入地探索所有的这些术语。然而,对开发者来说,下面是 Python 的一些顶级技术功能的快速介绍。

Python 的技术优势是什么?—— 面向对象和函数式的(编程)

从一开始, Python 就是一门面向对象的语言,它的类模型支持一些高级概念如多态、操作符重载、多重继承。然而,因为 Python 简单的语法和类型, 应用 OOP 是非常容易的。事实上,如果你不理解这些术语。你会发现:使用 Python 来学习他们会比使用几乎其他所有可用的 OOP 语言更容易。 除了作为一个强大的代码构建和重用的工具,Python 的 OOP 特性使得它很适合作为其他面向对象系统语言的脚本化工具,比如,使用合适的胶水代码, Python 程序可以作为在 C++、 Java 和 C# 中实现的类的子类(也就是特殊化 / 继承)。 同样重要的是,OOP 是 Python 中的一个选项。不需要一下子成为一个专家也可以用 Python 做很多事。Python 非常类似 C++,同时支持面向程序和面向过程的编程模式。当条件允许时,就可以用它的面向对象工具。这在战术开发模式中特别有用,因为它排除了设计阶段。 除了它原来的面向过程(基于语句)和面向对象(基于类的范式),Python 在最近这些年还增加了内置的函数式编程 —— 广为接受的一些特性包括:迭代生成器、理解技术、闭包、映射、装饰器、Lambda 匿名函数和一等函数对象。这些都可以作为 OOP 工具的补充和替代。 本文章首发在 LearnKu.com 网站上。

上一篇下一篇

Markdown 文本

纠错改进


Python 的技术优势是什么?—— 免费

Python 的使用和分发都是完全免费的。和其他开源软件如 Tcl, Perl, linux 和 Apache 一样,你可以在 Internet 上免费获取整个 Python 系统的源代码。拷贝,将它嵌入到你的系统,或者和你的产品一起发布,都是没有限制的。事实上,如果你非常想,甚至可以销售 Python 的源码。 但不要搞错了:“免费” 并不意味着 “不支持”。相反,Python 在线社区以大多数商业软件客服支持团队都需要努力模仿的速度来响应用户的问题。因为 Python 发布了完整的源码。这给了开发者力量,导致实现专家团队的创建。虽然研究或者修改一个编程语言的实现不会让每一个人都感到开心,但欣慰的是你知道自己如果需要就能够做到这样的事。你不再受制于商业公司的肆意改变,最终的文档 —— 源代码,作为最终武器随你调遣。 如早些时候提到的,Python 的开发是被一个在 Internet 上大规模协作的社区完成的。它包含了 Python 原作者 —— Guido van Rossum,官方任命的终身仁慈的独裁者(BDFL)—— 再加上一个数千人的支持团队。语言的更改必须遵循一个正式的增强程序,并且被其他开发者和 BDFL 仔细的审阅。这通常让 Python 对于变化的更改比其他语言和系统更保守。虽然 Python 3.X/2.X 的两个分支的出现是彻底和故意地与传统偏离,但是它(语言这种更改方式)在每一个 Python 分支中仍然基本有效。 本文章首发在 LearnKu.com 网站上。

上一篇下一篇

Markdown 文本

纠错改进


Python 的技术优势是什么?—— 可移植

Python 的标准实现是用可移植的 ANSI C 来写的,它编译并运行在当今几乎所有的主流平台上。比如 当前 Python 运行在 从 PDAs 到 超级电脑的所有类型的电脑上。作为一个不完整列表, Python 可以用在:
  • Linux 和 Unix 系统。
  • 微软 windows (所有现代版本)
  • Mac OS(OS X 和经典版本)
  • BeOS, OS/2, VMS 和 QNX
  • 实时系统(比如 VxWorks)
  • Cray 超级电脑 和 IBM 大型主机
  • 运行 Palm OS, PocketPC 和 Linux 的 PDA
  • 运行 Symbian OS 和 Windows Mobile 的手机
  • 游戏控制台和 iPods
  • 运行 Google 的 Android 和 Apple 的 iOS 的平板和智能电话
  • 其他
就像语言解释器本身,随 Python 一起发布的标准库模块被实现为尽可能地跨平台可移植。 而且,Python 程序自动被编译为可移植的字节码。字节码在任何安装了兼容版本的 Python 的平台上运行的结果都是一样的(关于这点更多下一章)。 这意味着使用核心语言和标准库的 Python 程序在 Linux,windows 和有 Python 解释器的大多数其他系统上运行是一样的。 大多数 Python 的移植版本还包括特定平台的扩展(比如在 windows 上 对 COM 的支持),但是核心的 Python 语言和库在所有地方工作起来都是一样的。如前面提到的,Python 还包括一个名为 tkinter 的 TK GUI 工具集的接口(在 2.X 分支中叫做 Tkinter),它允许 Python 实现全功能的图形用户界面,可以运行在所有主流的 GUI 桌面平台,而不需要更改程序。

Python 的技术优势是什么?—— 功能强大

从功能的角度,Python 是一种混合体。它的工具集使得它介于传统的脚本语言(如 Tcl, Scheme 和 Perl)和系统开发语言(比如 C、 C++ 和 Java)之间。 Python 提供了脚本语言所有简单易用和通常在编译语言里面才会有的更高级软件工程工具。不像其他脚本语言,这种结合使得 Python 适合于大规模的开发项目。下面将提前了解一下在 Python 工具集里面将会发现的一些主要工具:

动态类型

Python 跟踪程序运行时它使用的对象类型。它在代码中不要求复杂的类型和大小声明。事实上,如将在第 6 章中所见,在 Python 中根本就没有类型或变量声明这种东西。因为 Python 代码不包含数据类型,它也通常自动适配所有的对象。

自动内存管理

Python 自动分配对象并在不需要时回收他们(垃圾回收),并且多数情况下能够按需增减。你将了解到。Python 会代替你去跟踪底层内存细节。

大型编程支持

对于构建更大的系统,Python 包括了像模块、类、异常这些工具,允许你把系统归纳成组件,使用 OOP 去重用和自定义代码,优雅地处理事件和错误。 之前描述过的 Python 的函数式编程工具,提供了满足许多同样目标的额外方法。

内置对象类型

Python 提供了常用的数据结构,如列表、字典还有字符串作为语言的固有部分。你将看到他们都是灵活易用的。比如,内置的对象能按需增减,能任意嵌套来代表复杂的信息,甚至更多。

内置的工具

为了处理所有这些对象类型,Python 还带有强大和标准的操作,包括 concatenation (连接集合)、 slicing (提取部分数据)、排序、映射和更多。

库实用程序

对于更具体的任务, Python 还有许多预编码的库工具,它们支持从正则表达式匹配到网络编程的所有事情。一旦你学会了语言本身, 就可以使用 Python 的库工具完成许多应用程序的既定任务和功能。

第三方实用程序

因为 Python 是开源的,鼓励开发者贡献预编码的工具,以支持不被它的内置库支持的任务。在 web 上,你会发现对 COM、图像、数字编程、XML、数据库访问还有其他很多任务的免费支持。 尽管 Python 有许多工具,但是它还保留了非常简单的语法和设计。最终产生了一个带有脚本语言所有可用性的强大的编程工具。

Python 的技术优势是什么?—— 可混合

Python 程序可以简单地和其他语言编写的组件以各种方式 “粘合” 在一起。比如 Python 的 C API 能让 C 程序和 Python 程序灵活地相互调用。这就意味着可以按需向 Python 系统添加功能,并在其他的环境和系统中使用 Python 程序。 比如,将 Python 和其他语言如 C 和 C++ 编写的库混合在一起,使得它成为一个易于使用的前端语言和自定义工具。如前面提到的,这也让 Python 善于快速原型化系统 —— 可以先用 Python 来快速实现系统,再根据性能要求,将代码逐步移植到 C 以交付。

Python 的技术优势是什么?—— 相对容易使用

和其他替代语言如 C++, Java 还有 C# 相比,Python 编程对大多数观察者似乎简单地让人吃惊。要运行一个 Python 程序,只需要简单地输入并运行,中间没有像在 C 和 C++ 里面的编译和链接步骤。在程序更改后,Python 立即执行程序,形成了交互的编程体验和快速的开发周转 —— 在许多情况下,看到代码更改效果的速度几乎和你可以输入的速度一样快。 当然,开发循环周转时间只是代码 Python 容易使用的一方面,它还提供了刻意简单的语法和强大的内置工具。事实上,有些极端的人甚至称 Python 为可执行的伪代码。因为它消除了其他工具当中的大部分复杂性。 对于同样的程序,Python 比其他流行的语言要更简单,更小,更灵活。

Python 的技术优势是什么?—— 相对容易学习

现在到了本书的重点:核心的 Python 语言是容易学习的,特别和其他广泛应用的编程语言相比。事实上,如果你是一个有经验的开发者,你可以期待在几天之内就能够编写一个小规模的 Python 程序,甚至可以在仅仅几个小时之内就学会语言的一些有限的部分 —— 虽然你不能期待那么快的就成为一个专家(尽管你可能从营销部门那里听到的就是这样!)。 事实上,要精通任何像今天的 Python 这样重要的主题并不简单。我们将用本书中的剩余部分来完成这个任务,但是为了精通 Python 的投入是真正值得的 —— 最后,你将会获得能够应用到几乎每个编程应用领域的编程技巧。 而且,许多人发现 Python 的学习曲线比其他的编程工具要缓和得多。这对寻求学习语言以应用在工作上的职业开发者和暴露在 Python 层下以自定义和控制的系统的终端用户来说是好消息。当前许多系统都依赖于终端用户在需要少量或者不需要帮助的情况下,能够学习足够的 Python 来在线定制他们的 Python 自定义代码这个事实。而且,Python 还产生了以编程为乐趣而不是作为职业生涯的一个大的用户组,可能他们永远不会需要全面的软件开发技巧。虽然 Python 确实有高级的编程工具,但它核心语言的本质仍然对初学者和大师都是相对简单的。