Python History and Design Philosophy
概述
本篇重要关注 Python 的历史和设计哲学,这对从设计者的角度深入理解 python 的特性非常关键,更重要的是,这对我们在实际的项目中更好、更合理有效地使用 Python 提供帮助。
编程语言的基础概念
解释型语言和编译型语言的区别
解释器的简单工作机制和原理。
理解解释器架构:原理、组成与运行机制全解析
Python 的历史
Python 作为胶合语言
C 语言开发的不足
- 开发效率
作者眼中的 Python
- Python 大量的采用了 C 语言里面的设计,比如 if、else 等关键字都直接来源 C 语言。但是放弃了 C 语言的大括号和分号,选择了缩进去区分不同的编程语句。
- Python 是一门动态语言,不像 C 语言一样需要预先声明变量和指定变量类型,,因此 Python 里的变量只是所引用对象的名称,并且也可以在程序运行时改变变量类型。
- Python 内置了大量的数据类型,包括布尔(Boolean)、数字(Number)和字符串(String)等,这些类型都是不可变的。除此以外还有像列表、元组和字典这种容器型的数据类型。
- 为了程序的模块化,Python 引入了包(packages)、模块(modules )、类、方法和函数。为了流程控制,Python 提供了 if/else、while 和可迭代的实例。为了处理程序异常,Python 使用了 Exception 语法,raise 关键字可以抛出异常(exception),try/except/finally 可以处理异常。
- Python 的所有对象都是第一类对象,这意味着函数、类、方法、模块和所有的其他对象都可以在运行时自由地传递,并放入在各种数据结构(例如列表或字典)中去。
- Python 支持面向对象编程。
- 除了自身特性外,Python 还拥有着大量的标准库和第三方库,方便使用者完成各种各样的需求。
- 最后,Python 的标准实现使用 C 语言实现的,但是 Python 不仅仅局限于 C 语言,它也可以用 Java(Jython)、Microsoft .NET(IronPython),甚至是 Python 自己实现(PyPy)。
Python 的实现
Cpython
PyPy
Python 哲学
EveryThing is Object
可以偷懒的设计哲学
- 尽可能从其他地方借用想法。
- “事情应该尽可能简单,但不要简化。”
- 只做好一件事情(UNIX哲学思想)
- 不要对性能太担心-以后有需要时,再进行优化。[重要]
- 不要与环境(environment)抗争,顺其自然。
- 不要追求完美,“足够好”就可以了。
- (因此)有时可以偷工减料,后续可以想办法弥补。
不可以偷懒的设计哲学
- Python 不能仅仅运行在某个特定平台(Linux 或者是 Windows)上,虽然 Python 在一些平台上的某些功能并不总是可用的,但是其核心功能应该在任何平台上都可以使用。
- 不要用机器可以处理的细节去打扰用户,也就是说,机器能够完成的,就需要用户去实现它。
- 支持和鼓励只能运行于特定平台的用户代码,但不能让用户不能访问对平台本身的功能或特性(这与Java形成了鲜明对比)(Python 可以方便地嵌入 C 库)。
- 一个大型的复杂系统应具有不同级别的抽象扩展能力,这可以为有想法的的用户(无论其是否熟练)提供最大的自由去实现他想要的功能。
- 错误不应该是致命的,也就是说,只要虚拟机仍在运行,用户代码就能够从错误状况中恢复过来。
- 同样的,错误不应该被静默地传递。
- 不应该让用户 Python 代码中的 bug 导致 Python 解释器出现未定义行为。
- 最后,为了尽可能保持 Python 的可读性,标点符号使用应该符合书面英语或高等代数中的常用用法,除非遇上了编程语言里的历史传统(比如用 x * y 表示乘法)。