第一章 问答环节
为什么使用Python
- 软件质量:Python更注重可读性、一致性和软件质量。
- 提高开发者效率:简洁的语法、动态类型、无需编译、内置工具包等特性大大提高开发效率。
- 程序的可移植性:Python程序几乎可以不做任何修改就运行在所有主流计算机平台上。
- 标准库的支持:Python内置众多预编译并可移植的功能模块。
- 组件集成:Python脚本可通过灵活的集成机制轻松地与应用程序的其他部分进行通信。Python代码可以调用C和C++的库,也可以被C和C++所调用,可以与Java组件集成,可以与COM和.NET等框架进行通信。
- 享受乐趣:简单易用使得Python编程成为一种乐趣而非重复劳动。
Python的缺点:慢
- 目前Python的标准实现方式是将源代码的语句编译为字节码的形式,之后再将字节码解释运行。
- Python已经过很多次优化,在处理某个文件或构建一个GUI界面等任务时,Python代码会立即发送至Python解释器内部已经编译过的C代码,以提高效率。
- Python开发效率带来的效益往往比执行速度带来的损失更重要。
- 在需要更快执行速度的工作领域,可以通过分离一部分需要优化速度的代码,将其转换为编译好的扩展,并在整个系统中使用Python脚本将这部分扩展连接起来。典型例子:NumPy,它采用双语言混编策略,将Python变为一个高效并简单易用的科学计算编程工具。
谁在使用Python
- YouTube
- NASA
- 豆瓣
- 知乎
- …
使用Python可以做些什么
- 系统编程
- GUI编程
- Internet编程
- 组件集成:Python可以通过C/C++系统进行扩展,并能够嵌套C/C++系统的特性,使其成为一种万能胶水语言,可以脚本化处理其他系统和组件的行为。
- 数据库编程
- 快速原型:对于Python程序来说,使用Python或C编写的组件看起来都是一样的,所以可以利用Python做系统原型设计,之后再将组件移植到C/C++等编译语言上。
- 数值计算和科学计算编程
- 游戏、图像、人工智能、XML、机器人等
Python如何获得支持
- Python拥有一个庞大且活跃的开发社区。
- Python开发者使用一个源代码控制系统在线协同地工作(git?)。修改遵从一个正式PEP(Python Enhancement Proposal)协议并且必须经过Python的扩展回归测试系统。
- 一个非正式的组织PSF(Python Software Foundation,Python软件基金会)负责组织会议并处理知识产权的问题。
- 世界各地举办了大量的Python会议,O’Reilly的OSCON和PSF的PyCon是其中最大的会议。
Python有哪些技术上的优点
面向对象
- Python是一门面向对象语言
- Python的OOP特性使它可以对C++、Java和C#的类型进行子类的定制。
- Python既支持面向对象变成也支持面向过程变成。
免费
- Python的使用和分发是完全免费的。
- 如果你愿意,甚至可以销售它的源代码。
可移植
- Python的标准实现是有可移植的ANSI C编写的,可以在目前所有主流平台上编译和运行。
功能强大
- 动态类型:Python在运行过程中随时跟踪对象的类型,不需要在代码中进行复杂的类型和大小的声明。
- 自动内存管理:Python自动进行对象分配,并在对象不再使用时对其进行销毁(垃圾回收)。
- 大型程序支持:Python包含模块、类和异常等工具,允许你使用OOP重用和定制代码。
- 内置对象支持:Python提供了常用的数据结构作为语言基本的组成部分。
- 内置工具:Python自带了许多强大的标准工具。
- 库工具:Python预置了许多预编码的库工具。
- 第三方工具
可混合
Python可以以多种方式与其他语言编写的组件“粘接”在一起,例如Python的C语言API可以让Python灵活地调用C程序。
简单易用
- 简单
- 小巧
- 灵活
简单易学
- 简单的核心语法
Python和其他语言比较起来怎么样
- 比Tcl强大
- 比Perl更简洁的语法和更简单的设计
- 比Java更简单、更易于使用
- 比C++更简单、更易于使用,但通常不与C++竞争
- 比Visual Basic更强大也更具跨平台特性
- 比PHP更易懂且用途更广
- 比Ruby更加成熟
第2章 Python如何运行程序
Python解释器简介
- 安装到机器上的Python包含2个最小组件:解释器 和 支持的库。
- 解释器 是一种让Python程序(脚本、源文件、字节码)运行起来的程序。
- 根据不同情况,解释器可采用C实现或Java实现等。
程序执行
程序员视角
- 一个Python程序就是一个包含Python语句的文本文件。
- Python从头至尾按照顺序一个接一个地运行文件中的语句。
- Python文件是以.py作为其扩展名。
Python的视角
- 字节码编译
- Python虚拟机解释运行字节码
字节码编译
- 当程序执行时,Python内部会先将源代码编译成与平台无关的字节码形式。
- 必须纯文本的源代码,字节码的运行速度要快得多。
- 如果Python有写入权限,那么它将把程序的字节码保存为以.pyc为扩展名的文件。
- 如果在上次运行程序之后没有对源代码进行修改,则下次运行时,Python将会跳过字节码编译过程直接加载.pyc文件;反之,如果修改了源代码,下次运行时Python会首先重新编译字节码。
Python虚拟机(PVM)
一旦程序编译为字节码,之后的字节码发送到Python虚拟机上来执行。
执行模块的变体
Python实现的替代者
- CPython
- Jython
- IronPython
- PyPy
- Stackless Python
执行优化工具
CPython、Jython和IronPython都是通过同样的方式实现Python语言的,即通过把源代码编译为字节码,然后在适合的虚拟机上执行这些字节码。
然而,其他的系统,如Psyco及时编译器(JIT)和Shedskin C++转换器,则试着优化基本执行模块。
冻结二进制文件
通过一些第三方工具,将Python程序转换为可执行程序