Python 学习笔记 (I)

上段时间学习 Python,学到一半暂停了,现在继续学,还是做一下笔录,抓住关键的要点,免得思路流失。

喜欢 Python 的原因,是觉得 Python 更符合美学,更接近于人类语言,简洁,优美。

我的学习使用教材为《Learning Python(4th Edition)》英文原版,在此提供 Amazon 上本书的链接:中文版/英文版


Part I. Getting Started

第一章:介绍一下关于 Python 的历史和周边信息,概览一下这个语言。

第二章:描述 Python 执行程序的方式。

Tip 1-1: Python 文件是直接的源代码文件 (*.py),安装 Python 后,直接命令行执行 python [routine.py] 即可运行一个Python 程序。(当然,python.exe 要加到环境变量中。)

Tip 1-2: 另外,在 Python 第一次运行一个 (*.py) 程序时,会自动进行一个编译动作,将整个程序编译进一个 (*.pyc) 二进制文件,当再次运行 (*.py) 文件时,系统会自动检测脚本是否发生过变动,有变动则重新编译再运行,没有的话则会跳过编译直接执行现有的 (*.pyc),这样能够大大提高效率,并且这一切均在自动进行。同时,(*.pyc) 也是一个发布程序的方式。

Tip 1-3: Python 虚拟机 (PVM) 是一个类似于 Java 虚拟机的环境,独立与平台。Python 程序的运行大致经过 [source(*.py)] -> [binary(*.pyc)] -> [runtime(PVM)] 这三个过程。但 Python 是一个脚本语言,不存在一个编译的过程,从 (*.py) 到 (*.pyc) 这一步是不经过编译的。

Tip 1-4: Python 在不同的平台上有不同的版本,按大块来分有 CPython(by C)、Jython(by JAVA)、IronPython(by .NET)。其他的工具包括 Psyco(JIT compiler): 一个非标准的插件,可以极大提高 Python 代码的运行效率;Shedskin(C++ translator);Frozen Binaries: 可将 Python 程序直接打包成可执行文件,不仅提高效率,也可作为部署工具。

Tip 1-5: Python 在命令行中执行 python 脚本,需要指定清楚路径和扩展名,但在 import 中导入一个 python 文件,则注意两者都不需要。例如:命令行 (python C:\script.py),但是导入只可以 (import script)

Tip 1-6: input trick: 利用 input() 可以作为暂停脚本程序的一个小技巧。

Tip-1-7: 导入脚本或者库的方法:import script,使用此语句将直接运行 script 中的所有脚本,注意 import 自动有 once 功能,如果再次 import 同一个库,则后面那个会被忽略,脚本将会完全不被执行,如果需要重新 import,需要调用 imp 库中的 reload 函数:

# 第一次导入脚本,会被正常执行。
>>> import script1

# 第二次导入脚本,会被完全忽略。
>>> import script1

# 使用 imp 库中的 reload 函数
>>> from imp import reload

# 这次好了,可以重新跑这个脚本
>>> reload(script1)

Tip 1-8: 假设在一个脚本 script.py 中定义了变量 var1, var2,则使用 import 之后,这些变量将作为模块的属性存在,也就是说:

# script.py
# 在这个脚本中定义一些变量
var1 = 1024
var2 = 'Hello'

# 将脚本作为模块导入
>>> import script

# 变量名则为模块的属性
>>> print(script.var1)
1024

# 这样会报错
>>> print(var2)
NameError: name 'var2' is not defined

# 也可以使用 from module import name1, name2... 这样的方式单独导入一些名字

>>> from script import var1, var2

# 这样的话,名字将直接导入到当前模块中(而不是作为模块名的属性)
>>> print(var2)
Hello

# 但是无论何种 import,整个模块脚本都会被执行,并且遵循 once 法则,后面的导入将完全被忽略。

通过这种模块机制,可以为 Python 程序划分命名空间,以避免一般性的名称冲突。

Tip 1-9: 引入一个模块可以使用 from 语法,这样将在导入模块后将指定的变量复制到当前命名空间中,如此导入变量有可能会引入名称冲突,因此不建议使用。

# 这样可以从 module 模块中导入变量 varN 到当前命名空间
from module import var1 [,var2...]

Tip 1-10: 使用 reload 来重新导入模块将不具备传递性,也就是说被 reload 的模块中的 import 与 from 语句将被忽略。

Tip 1-11: 使用 exec(open('code.py').read()) 的语法同样可以执行一个脚本模块,这样相当于直接将模块中的脚本粘贴到当前命名空间中运行,这样不会实质上执行脚本中的 import 和 reload,但是里面的局部变量将散落出来,覆盖当前命名空间中的变量名。

Tip 1-12: IDLE 是一个建议的 python IDE,包括了执行脚本、编写和保存代码、代码提示等基本功能。其他可选的 IDE 包括:Eclipse, PyDev, Komodo, NetBeans, PythonWin 等等。

Tip 1-13: 总结一下,以及其他执行一个 python 代码的方法:1. 在 commandline 中启动; 2. 使用 import/from/reload 语句; 3. 使用 exec 语法; 4. 点击图标(Windows) --不割-- (下面是非常规的方法) 5. 使用嵌入型调用,譬如在 C 中使用 Python.h 执行 python 代码; 6. 使用 Frozen 打包后调用二进制文件; 7. 使用 IDE 的集成调用方法。

Tip 1-14: 调试方法:1. DO NOTHING (等待错误出现再处理); 2. 插入 print 语句; 3. 使用 IDE 提供的调试器; 4. 使用 pdb; 5. 其他调试工具 (包括不同操作系统平台的工具,例如 Winpdb)

 

PART I FINISHED AT PAGE 72

posted @ 2013-04-28 07:51  呆滞的慢板  阅读(746)  评论(0编辑  收藏  举报
呆滞的慢板