Python 脚本通《Learning Python》 介绍Python
《Programming Python》 做什么 --> Web GUI Database
《Python Pocket Reference》 额外资料
Python 2.X 过渡到 Python 3.X Python 3 是未来的发展方向
第一部分 使用入门
第一章 问答
软件质量高
致力于可读性,具有比传统脚本语言更加优秀的可重用性和可维护性。
开发者效率高
大小只有C++或是Java的1/5 -- 1/3,解释行,可以立即运行,无需传统所必须的编译以及链接等步骤。
可移植性好
绝大多数不做任何改变即可在所有主流计算机平台上运行。Python提供了多种可选的独立程序,包括用户图形界面、数据库接入、基于Web的系统等。
标准库支持
涵盖了从字符模式到网络脚本模式的匹配;第三方支持工具包括网站开发、数值计算、串口读写、游戏开发等各个方面。
组件集成
通过灵活的集成机制轻松地与应用程序其他部分进行通信。是Python成为产品定制和拓展工具。可以调用C和C++的库,也可被C和C++等调用,与Java组件集成,与COM和.NET进行通信,通过SOAP、XML-RPC和CORBA等接口与网络进行交互。
享受乐趣
避免繁琐、享受乐趣。
缺憾
执行速度不够快
源代码语句 à 编译 /转换 à 字节码 à 解释执行
优点
面向对象
free(开源)
可移植
功能强大 动态类型 自动内存管理 大型程序支持 内置对象支持 内置工具 库工具
第三方工具
可混合 Python C C++
简单易用 “可执行的伪代码” 简单易学
第二章 Python 如何运行程序
Python 解释器简介
解释器:代码与机器在计算机硬件之间的软件逻辑层。
典型:
print('hello world')// print("hello world") 也成立
print(2**100)
内部机理:
(1) 源程序执行 *.py
(2) Python 内部将源代码转换成为字节码 *.pyc
保存字节码文件,作为启动速度的优化,再次执行源代码,检查时间戳,若为更改,则直接加载 *.pyc,跳过编译。
若Python无法在机器上写入字节码,字节码将会在内存中生成,执行结束后简单丢弃。
(3) *.pyc文件发送到Python虚拟机中(PVM),PVM只是一个迭代运行字节码指令的大循环,是Python的运行引擎,是运行实际脚本的组件,是所谓“Python解释器”的最后一步。
纯Python的运行速度介于传统的编译语言和传统的解释语言之间,Python所有的事情都是发生在运行时的,是有动态的。
Python的实现:
(1) CPython
标准的Python实现方式;运行速度最快、最完整、最健全。
预装的、以及从http://www.python.org上获取的基本都是CPython。
(2) JPython
为了与Java编程语言集成;JPython包含了Java类,这些类编译Python源代码,形成Java字节码,映射到Java虚拟机上(JVM)。
目标是让Python代码脚本化Java应用程序,实现与Java的无缝集成。
(3) IronPython
目标是Python可以与windows 平台上的 .NET 框架以及对应的 Linux 上开源的Mono编写成的应用相集成,既可作为服务器端,也可作为客户端上的组件。
即将Python源代码转换成 .NET 对应的等效执行环境。
执行优化工具:
Psyco:拓展字节码执行模块的组件,是PVM的增强工具,将部分字节码转换成底层的真正的二进制机器代码,让程序运行的更快。
支持到 Python2.7,现已由 PyPy 代替;http://zh.wikipedia.org/wiki/PyPy
PyPy做到了Psyco未曾实现的动态编译。
Shedskin C++ 转换器:尝试将Python代码转换成为 C++代码,采用机器中的C++编译器将其编译成机器代码。仍是一个实验性项目!
冻结二进制文件(Frozen Binary)
冻结二进制文件 à 将Python 转换为可独立执行的二进制代码文件
冻结二进制文件将程序的字节码、PVM、以及任何程序所需要的Python支持文件捆绑在一起形成一个单独的文件包。
三种能够生成冻结二进制文件的系统:py2exe(Windows)、PyInstaller(Linux 及 UNIX,能够生成自安装的二进制文件)、freeze(最初始的版本)。都是免费的,可以自己获取。
参考:http://www.python.org 以及 http://www.vex.net/parnassus/
冻结二进制文件与真实编译输出结果有所不同:他们通过虚拟机运行字节码。也就是说如果离开了必要的初始改进,冻结二进制文件与最初的源代码执行速度是相同的。
其他执行方案:
Stackless Python: 标准CPython实现的一个变体,不会在C语言调用栈上保存状态。
Cython:它为Python代码结合了调用C函数以及使用变量、参数和类属性的C类型声明的能力。
第三章 运行程序
交互提示模式下编写代码
退出:UNIX : ctrl-D Mac OS / Windows : ctrl-Z
不能在交互模式中编写大量的代码,且其不会保存在文本文件中,适合体验语言。
可以采用交互模式实验不懂的语法、测试程序组件!
问题:
(1) 只能够输入Python命令;
(2) 在文件中打印语句print是必须的,在交互模式下不需要;
(3) 目前,交互模式下不需要缩进;
(4) 留意提示符的变换和复合语句; Ctrl-C 返回主模式
(5) 用一个空行结束复合语句;按下Enter键两次。
(6) 交互模式下一次运行一条语句。
脚本文件、命令行模式运行文件
Windows下:
切换到脚本文件所在目录,执行脚本;
(1) 若已经修改Path值,则直接命令执行
(2) 若为修改,则需要输入安装Python的完整路径
与Java同!
安装目录在C:\python30\;
安装目录在C:\python30\; 脚本目录在:C:\code\
由于新的Windows系统使用注册表能够找到相应的执行程序,所以可以省略Python命令。
Windows 双击脚本文件,可直接运行,也许不会看到打印的输出或是错误的提示,会一闪而过,需要调整!
在脚本后面加上 input() ,正确的执行脚本即可短暂停留;Enter键退出。
UNIX下可执行脚本(#!)
两个特征
(1) 第一行是特定的;往往以 #! 开始;
(2) 往往都拥有可执行的权限; chmod+x file.py 实现;
模块的导入与重载
导入:
一次导入后,再次导入则不会再工作:
重载:
模块与命名空间
模块式Python程序最大的程序结构,导入是一种有效的运行代码的方式;
每一个模块式一个独立完整的变量包,即一个命名空间。
Import 与 reload是一种常用的测试方法;不建议使用其启动程序;
exec运行模块文件
避免导入模块以及重载;
缺点:
由于exec相当于将代码粘贴到调用它的代码处,对当前正在使用的变量有潜在的默认覆盖的可能;
IDLE 用户界面(建议初学者使用!!)
能够编辑、运行、浏览和调试Python程序的GUI;
Windows 下开始菜单内即有,安装目录下同;
UNIX下在命令行中启动IDLE顶层脚本。
可用替代品IDE:
Eclipse和PyDev插件:流行的、强大的;
Komodo:http://www.activestate.com 下载,非免费;
NetBeans IDE Python:强大;
PythonWin:Free,只局限于Windows平台;可从http://www.python.org 上获得;
Google 搜索 “Python editors” Wiki界面上有介绍;
嵌入式调用:
Python代买嵌入到C 、Java等代码中执行;
冻结二进制文件执行:
运行单个可执行的包;
文本编辑器启动:
调试建议:
print语句、pdb单步执行、使用IDE GUI调试器等;