Python语言总结
版本：v2.0
Crifan Li
摘要
本文主要介绍了个人目前已经发布整理的Python资料，以及和Python语言本身相关的总结，以及各种内置（str,unicode,json,OptionParser等）模块的总结，和第三方（Beautifulsoup等）库的总结，以及介绍Python方面的有价值的参考资料。
本文提供多种格式供：

HTML版本的在线地址为：
http://​www.crifan.com/​files/​doc/​docbook/​python_​summary/​release/​html/​python_​summary.html
有任何意见，建议，提交bug等，都欢迎去讨论组发帖讨论：
http://​www.crifan.com/​bbs/​categories/​python_​summary/
在线阅读	HTML  1	HTMLs  2	PDF  3	CHM  4	TXT  5	RTF  6	WEBHELP  7	
下载（7zip压缩包）	HTML  8	HTMLs  9	PDF  10	CHM  11	TXT  12	RTF  13	WEBHELP  14	
修订历史	
修订 2.0	2013-10-10	crl	
· 	把crifanLib.py独立出去称为单独的book
· 	把如何使用和运行Python脚本移至：python初级教程：入门详解
· 	重新整理此book的架构
· 		
修订 2012-11-06	1.2	crl	
· 	将Python从language_summary移至此独立book
· 	添加了Python代码的格式化
· 	添加了BeautifulSoup中find参数可以为正则表达式
· 	添加了在Mac下运行Python脚本
· 	更新crifanLib.py的最新链接
· 		
Python语言总结:
Crifan Li
版本：v2.0
出版日期 2013-10-10
版权 © 2013 Crifan, http://​crifan.com

本文章遵从：署名-非商业性使用 2.5 中国大陆(CC BY-NC 2.5)15

目录
1. Python简介  	 # 

1.1. Python的特点  	 # 
2. 已发布的Python的相关资料  	 # 

2.1. python初级教程：入门详解  	 # 
2.2. python中级教程：开发总结  	 # 
2.3. Python高级教程  	 # 
3. Python语言本身的理解和心得  	 # 

3.1. 学习python的本质就是学习对应的各种模块的用法  	 # 
3.2. Python代码的格式化  	 # 
3.3. 将py文件编译成pyc  	 # 
3.4. for循环中的变量是只读的，不可修改  	 # 
4. python内置模块学习心得  	 # 

4.1. Python中re模块  	 # 
4.2. Python中的json  	 # 
4.3. Python参数处理模块：OptionParser和argparse  	 # 

4.3.1. 利用OptionParser库中的add_option添加脚本参数和帮助信息  	 # 
4.3.2. 官方建议放弃OptionParser，使用新的模块：argparse  	 # 
4.4. Python中和字符串相关的内容（字符编码，str，Unicode等）的心得  	 # 
5. Python第三方模块学习心得  	 # 
6. Python相关资料  	 # 
参考书目  	 # 

第 1 章 Python简介

1.1. Python的特点
· 	不需要编译，即可运行
· 	有很多特性，使得语言本身很方便编程者使用
· 	

第 2 章 已发布的Python的相关资料
之前自己折腾了很多Python方面的东西。
然后，后来就整理出了很多东西：
系列教程
将相关的内容，整理成系列的教程：
Python初级教程
· 	详见：第 2.1 节 “python初级教程：入门详解”
· 	Python中级教程
· 	详见：第 2.2 节 “python中级教程：开发总结”
· 	Python高级教程
· 	详见：第 2.3 节 “Python高级教程”
· 	库函数：crifanLib.py
将一些常用的功能，整理成通用的函数。
最终形成了自己的python的库函数
详见：
详解crifan的Python库：crifanLib.py1

2.1. python初级教程：入门详解
关于Python方面的基础知识已移至：
python初级教程：入门详解  2
包括下载合适版本的Python，安装Python等等内容。
如何使用和运行Python脚本
之前的，如何使用和运行Python脚本，也已移至：
python初级教程：入门详解  3
中的对应位置：
如何在Windows环境下使用Python脚本  4
和：
如何在Mac环境下运行Python脚本  5

2.2. python中级教程：开发总结
后来，又整理了出了，开发过程中很多的心得，
然后把所有内容都放进了对应的教程：
python中级教程：开发总结  6

2.3. Python高级教程
接着，对于Python，相对的一些知识点，专门整理出了一系列的教程，算是高级教程系列。
目前已有：
Python专题教程：字符串和字符编码  7
Python专题教程：抓取网站，模拟登陆，抓取动态网页  8
Python专题教程：正则表达式re模块详解  9
Python专题教程：BeautifulSoup详解  10

第 3 章 Python语言本身的理解和心得
此处整理一下，关于Python语言本身，这方面的心得和体会：

3.1. 学习python的本质就是学习对应的各种模块的用法
python中有很多其他的库，帮你实现各种需要的功能，而你要做的事情，就是import对应的库，然后调用对应的函数即可。
而利用python去编程，去实现一定的功能，更多的层面上，除了学习完python的基本语法之后，就是对各种库，各种模块的如何使用上了，可以极大地提高你做事情的效率。

3.2. Python代码的格式化
python中，没有（类似于其他语言可用的，比如SourceFormatX之类的）代码格式话工具，即意味着，你无法用工具，打开python文件，直接点击某个按钮，就可以帮你全部格式化好了。
只能通过手工去格式化你的python代码
所谓手工，那就是，把属于每个函数（def关键字）所属代码，按照自己对代码的内在逻辑的理解，去一行行的缩进
此工作，目前只能手工做，好像也没有其他更加方便的方法。
单独针对手工一行行的处理python代码，不同的工具中，实现的效率也会不同。
推荐使用Notepad++，因为此软件有很多方便你格式化Python代码的功能：
可以显示所有特殊字符，包括空格，TAB键，行尾符等
具体参考：Notepad++支持显示回车符，换行符，TAB键，行首，行尾等特殊字符1
支持将TAB键自动转换为空格
目的在于，对于Python这样的语言，是靠缩进来决定代码逻辑的，所以对于缩进，TAB键和（4个连续的）空格，两者之间不是等价的，会产生语法错误的。
此时就可以利用Notepad++的，将TAB键自动转为（默认为4个，可以自定义个数）空格，实现很方便的代码格式化。
具体参考：Notepad++支持用空格取代TAB键2
总之，关于Python代码的格式化，需要手动处理Python代码，而用Notepad++去处理，可以极大地提高效率。

3.3. 将py文件编译成pyc
参考这里3，启动Python的IDE – IDLE (Python GUI)
然后在里面输入：
import py_compile
回车（↵）后再输入：
py_compile.compile(r”E:\ dev_root\ Python25\ Lib\ sgmllib.py”)
就可以将对应的py文件编译成pyc了，生成的sgmllib.pyc在同目录下。

3.4. for循环中的变量是只读的，不可修改
在使用for循环时，要注意其所得的单个变量，是只读的，不能修改。
想要修改其值的话，只能借助其他变量实现。
示例代码如下：

for singleContent in soupContents: #singleContent is BeautifulSoup.Tag
    ......
    if(recursive):
        ......
        filteredSingleContent = singleContent; # here must use another tmp value to store changed value
        filteredSubContentList = removeSoupContentsTagAttr(filteredSingleContent.contents, ......);
        ......
        filteredSingleContent.contents = filteredSubContentList; # here if use singleContent.contents = filteredSubContentList will cause error !!!
        #logging.debug(”[%d] after filter, sub contents=%s”, currentLevel, filteredSingleContent);
        filtedContents.append(filteredSingleContent);
    else:
        ......

第 4 章 python内置模块学习心得
此处整理一些，Python内置的各种模块的使用心得：

4.1. Python中re模块
Python中的re模块的相关使用心得，请参见
Python专题教程：正则表达式re模块详解  1

4.2. Python中的json
相关内容已移至：
Python中处理JSON字符串  2

4.3. Python参数处理模块：OptionParser和argparse

4.3.1. 利用OptionParser库中的add_option添加脚本参数和帮助信息
在写脚本的时候，可以利用add_option去添加对应的参数解析以及帮助信息，而剩下的事情，如何去解析对应的参数和显示帮助信息，都是由OptionParser自动完成了。
参考如下内容：

from optparse import OptionParser
 
def main():
    #main procedure begin
    parser = OptionParser()
    parser.add_option(”-s”,”--source”,action=”store”, type=”string”,dest=”srcURL”,help=”source msn/live space address”)
    parser.add_option(”-f”,”--startfrom”,action=”store”, type=”string”,dest=”startfromURL”,help=”a permalink in source msn/live space address for starting with, if this is specified, srcURL will be ignored.”)
    parser.add_option(”-x”,”--proxy”,action=”store”,type=”string”,dest=”proxy”,help=”http proxy server, only for connecting live space.I don’t know how to add proxy for metaWeblog yet. So this option is probably not useful...”)
 
    (options, args) = parser.parse_args()
    #export all options variables
    for i in dir(options):
        exec i+” = options.”+i
    #add proxy
    if proxy:
        XXX
    if startfromURL :
        XXX
    elif srcURL:
        XXX
    else:
        logging.error(”错误XXX”)
        sys.exit(2)
        
然后我们就可以在运行脚本的时候，添加参数了，比如：
BlogsToWordpress.py -s http://hi.baidu.com/recommend_music
想要查看帮助信息，就是常见的-h或–help：
BlogsToWordpress.py -h
更多例子和解释，可以参考这里：
python模块学习——optparse  3

4.3.2. 官方建议放弃OptionParser，使用新的模块：argparse
根据官网的解释，其实optparse已废弃，建议使用最新的更好用的argparse
此处之所以还继续介绍optparse主要是由于之前还是一直用的是optparse，而argparse自己只是试用过，不是很熟悉。
在可以看懂官网的例子的前提下，还是建议使用argparse

4.4. Python中和字符串相关的内容（字符编码，str，Unicode等）的心得
字符编码相关的内容，已整理至：
Python专题教程：字符串和字符编码  4

第 5 章 Python第三方模块学习心得
此处整理Python的第三方的模块，库等的学习心得：
前面第 3.1 节 “学习python的本质就是学习对应的各种模块的用法”已经说了，
其实学习Python的过程，很多时候就是在学习如何使用第三方模块，完成自己需要的功能。
下面就来总结一下，关于，Python的第三方的模块方面的学习心得和体会：

5.1. 去哪找python的第三方类库
关于Python的第三方库类库，其实网上很多很多相关资料。
其中，官网的Python库：Python Package Index1，其中有N多N多的库，有需要的人，可以去那里找找。
其他的网上的N多资源中，我觉得值得看看的有：
· 	http://​www.elias.cn/​Python/​HomePage中的3.3 用第三方类库的部分。
· 	
5.2. BeautifulSoup
关于BeautifulSoup相关的内容已整理至独立教程：
Python专题教程：BeautifulSoup详解  2

第 6 章 Python相关资料
此处记录一些不错的Python相关的资料，供需要时参考：
· 	简明Python教程  1
· 	Swaroop, C. H. 著，>沈洁元 译
· 	特点：内容很全。
· 	关于python的中文文档
· 	这里：http://​www.elias.cn/​Python/​HomePage介绍了很多的资源。其中就有python教程的中文版2
· 	

参考书目
[1] Python基础篇1 
[2] Big5 (Traditional Chinese) character code table2 
[3] 简繁转换3 
[4] Unicode Lookup4