Python参考资料
1. 基本安装
- http://www.python.org/ 官方标准Python开发包和支持环境,同时也是Python的官方网站;
- http://www.activestate.com/ 集成多个有用插件的强大非官方版本,特别是针对Windows环境有不少改进;
2. Python文档
学习资料:
-
Python库参考手册
-
Python 2.7 Tutorial 中文版(有可能需翻墙)(Python
其他版本的教程翻译见译者主页)
-
Python 2.7 Tutorial 中文版(有可能需翻墙)(Python
- Byte of Python 可以代替Tutorial使用,有中文译版的入门书籍。
-
Dive into Python 一本比较全面易懂的入门书,中文版翻译最近进步为很及时的5.4了。英文版则正在写针对Python 3.x的版本。
-
缺点是此书针对的Python版本比较陈旧,会给出一些过时的优化建议,建议同时阅读赖勇浩的<Dive
into Python>大补贴。 - 《深入 Python 3》中文版
-
缺点是此书针对的Python版本比较陈旧,会给出一些过时的优化建议,建议同时阅读赖勇浩的<Dive
编码风格:
-
Python社区官方建议采用的Python编码风格(啄木鸟社区上的中文译文)。相关的代码检查工具,参考:用PEP
8检查Python Coding风格。-
Google SoC 建议的 Python 编码风格(Python
编码风格指南中译版(Google SOC))- Google 原版的 Python 编码风格指南 SoC 的那个指南基本上是在这个上面做的修改和增补。
-
Google SoC 建议的 Python 编码风格(Python
- Zoom.Quiet的文档集(包括大量Python内容)
- 豆瓣上的Python相关书籍推荐
- Pythonic到底是什么玩意儿?
培训素材:
- ZoomQuier强烈推荐《笨办法学Python》
- Limodou的最新教程
- March Liu 的《Python速成指南》(slideshare.net需翻墙)
- 简单介绍类的可参考:IntroPy和在公司推广python
- 实际编程能力培训可参考沈仙人对他公司内部的Python培训素材:前言、基础篇、面向对象、图形界面编程、网络编程
训练题:
2.1 推荐资源站点
-
啄木鸟社区上的Python资源索引 (啄木鸟
Pythonic 开源社区 著名的(也可以说是最好的)国内Python开源社区。) - Parnassus山的拱顶 巨大的Python代码库,包罗万象。既可以从上面下载代码参考学习,同时也是与Python有关程序的大列表。
- Python号星际旅行船 著名Python社区,代码、文档、高人这里都有。
- faqts.com的Python程序设计知识数据库 Python程序设计知识库,都是与Python有关的程序设计问题及解决方法。
2.2 其他参考资料
具体技巧:
Web 框架:
并发处理:
图形界面:
-
在wxPython下进行图像处理的经验 (其实,仅使用wxPython也可以完成很多比较基础的图像处理工作,具体可以参照《wxPython
in Action》一书的第12节)
工具配置:
2.3 代码示例
- http://newedit.tigris.org/technical.htm Limodou的NewEdit编辑器的技术手册,讨论了一些关于插件接口实现、i18实现、wxPython使用有关的问题,值得参考。
-
关于插件扩展机制:
-
A Simple Plugin Framework 讲解了一种非常聪明而简单的办法来为代码提供插件接口。如果参考Java社区的类似框架,则有Java
Plug-in Framework (JPF)以及OSGi标准。 -
另外limodou先生在Ulipad中实现插件和MixIn的机制也十分简单有效,见[NewEdit]设计说明(一)--概述,当然在UliPad最新版本的代码中对这个机制的实现又有实用的改进。(发布插件则有不少项目采用Python
Eggs) - 比较复杂的应用程序则可以使用Zope Component Architecture这样的机制来实现灵活易用的扩展接口(注意:zca虽然是Zope平台的一个组成部分,但其自身是不需要依赖Zope平台即可使用的)。
-
A Simple Plugin Framework 讲解了一种非常聪明而简单的办法来为代码提供插件接口。如果参考Java社区的类似框架,则有Java
3. 常用工具
- Python Sidebar for Mozilla FireFox的一个插件,提供一个用来查看Python文档、函数库的侧边栏。
- IPython 很好用的Python Shell。
-
Easy Install 快速安装Python模块的易用性解决方案(使用这种方式发行的包通常以Python
Eggs的格式被Easy Install自动处理)。-
一般推荐先用 virtualenv 建个虚拟python环境再使用 easy_install
(之后就不用加 --prefix参数了)(而且可以避免包与包之间相互影响)。 - pip:在包依赖处理等方面比 easy_install 更好的一个解决方案。
- Yolk:包信息管理工具,可以把已经安装的包的版本列出来。
- Mac下说setuptools版本过低的问题
-
一般推荐先用 virtualenv 建个虚拟python环境再使用 easy_install
-
Fabric:Fabric 是一个自动化工具,它可以完成任意可以由脚本完成的事情,非常适合在本地操作远程——你不需要一次又一次的SSH到远程再进行部署。
- http://www.scons.org/ Java有Ant这个巨火的构建工具,Python的特性允许我们构建更新类型的构建工具,就是scons了。
3.1 Python IDE
我的IDE选择经验 其实我现在只用Vim和Pydev了
-
Pydev 基于Eclipse的,非常棒的Python环境,改进速度非常快,现在是我最喜欢的IDE。
-
http://www.xored.com Trustudio 一个基于Eclipse的、同时支持Python和PHP的插件,曾经是我最喜欢的Python
IDE环境,功能相当全了,不过试用时感觉有些细节不完善以致不大好用。 -
http://www-900.ibm.com/developerWorks/cn/opensource/os-ecant/index.shtml用
Eclipse 和 Ant 进行 Python 开发
-
http://www.xored.com Trustudio 一个基于Eclipse的、同时支持Python和PHP的插件,曾经是我最喜欢的Python
-
ulipad Python+wxPython实现的轻量级全功能跨平台IDE,非常好用。做一些简单小东西的时候我会用这个。
- http://pype.sourceforge.net/ 成熟的Python代码编辑器,号称功能介于EMACS和IDLE之间的编辑器。
- http://www.stani.be/python/spe SPE:号称是一个Full Featured编辑器,集成WxGlade支持GUI设计。
- eggy 用Python和QT实现的Python IDE,据说轻量又好用~
-
Eric Python IDE 基于QT实现的非常不错的跨平台PYTHON IDE。支持调试,支持自动补全,甚至也支持重构。如果没有ulipad,并且在我的gnome下基于QT的Eric界面别走形的话,我会选这个。
- Spyder 几乎是个轻量化的 Eric ,也是基于 QT 和 QScintilla2 实现。它是科学计算包python(x,y) (集成了科学计算常用的python第三方库,有400多M)的一个组成部分。
- http://www.scintilla.org/ 同时支持Win和Linux的源代码编辑器,似乎支持Python文件的编辑。
-
http://boa-constructor.sourceforge.net/ 著名的基于WxPython的GUI快速生成用的Python
IDE,但是开发进度实在太不积极了……
3.2 有意思的东西
3.3 普通但没准有用的东西
- pyForum:纯Python实现的论坛程序中最接近实用程度的一个,基于web2py实现。
4. 内置类库使用参考
5. 常用第三方类库
5.1 跨语言调用
-
JPype Python里调用Java类库、Java代码的桥接解决方案(因Limodou在ChinaUnix上提及而得知)。JPype使用要点 和其他语言调用
JNI 接口的方案一样,JPype 也常有内存泄露。
5.2 并发架构
-
PEAK提供一些用于实现自动化集群测试的重要基础类库,比如超轻量线程框架、分布式代码执行等。
-
greenlet 是PEAK给出的一种进程内的线程模型实现,自称是Stackless项目的副产品。其实这是一种伪线程,也就是说greenlet间切换需要明确指定下一步切换到哪块指令继续执行,而没有被执行的代码就被暂时挂起了。这里面greenlet间的执行顺序是完全确定的,并且是非并发的,就不能解决长时间大量资源占用的操作会导致程序无响应的问题。但greenlet可以用来减少资源死锁、互斥造成的资源消耗(代码被阻塞时,可以切换先去执行其他未被阻塞的部分),因此用来响应按钮点击等是挺好用的。
- greenlet 现在不再是 pylib 的组成部分了,而是一个独立的名为 greenlet 的 pypi 包,可以通过 easy_install 安装。
-
Eventlet 是基于 greenlet 完成的一个高并发网络库,提供“线程”池、消息队列等许多非常方便的机制,比直接用 greenlet 要方便得多。并且
Eventlet 源自著名的虚拟现实项目——第二人生,是经过现实考验的可靠解决方案。
-
greenlet 是PEAK给出的一种进程内的线程模型实现,自称是Stackless项目的副产品。其实这是一种伪线程,也就是说greenlet间切换需要明确指定下一步切换到哪块指令继续执行,而没有被执行的代码就被暂时挂起了。这里面greenlet间的执行顺序是完全确定的,并且是非并发的,就不能解决长时间大量资源占用的操作会导致程序无响应的问题。但greenlet可以用来减少资源死锁、互斥造成的资源消耗(代码被阻塞时,可以切换先去执行其他未被阻塞的部分),因此用来响应按钮点击等是挺好用的。
5.3 网络抓取
-
Requests:HTTP 协议访问封装库,接口界面设计比 Python 自带的
urllib 之类要简洁方便无数~ - PycURL 传说这是实现Python下多线程网页抓取的效率最高的解决方案,本质是对libcurl C语言库的封装。其实Twisted也可以定制成为一个网页抓取工具的。
-
Scrapy 是一个网络爬虫框架,可以非常容易地通过定制规则得到所需的爬网器。基于 Twisted 实现。
-
Larbin:似乎是 C++ 语言实现的一个多用途爬虫,号称性能很强,但目前不确定是否有 Python
封装。
-
Larbin:似乎是 C++ 语言实现的一个多用途爬虫,号称性能很强,但目前不确定是否有 Python
-
Python 可以通过 pamie 控制 IE 浏览器,通过 jssh 控制 Firefox ,主要目的是能比较完善地处理 Javascript 等。
-
Spynner:操控一个无 GUI 的 Webkit 实现 http 访问的模块。因为依靠 Webkit
,所以它能提供 AJAX 支持~ - PhantomJS:同样是个无界面 Webkit ,只不过提供的 API 不是 Python 的,而是 Javascript 的。
-
Zombie.js:也可以作为无头浏览器使用,但无需浏览器进程支持,而是依赖 Node.js ,接口也就自然是 Javascript
的。 -
更多关于操作无界面浏览器后端的讨论参考 Headless
Browser for Python (Javascript support REQUIRED!)
-
Spynner:操控一个无 GUI 的 Webkit 实现 http 访问的模块。因为依靠 Webkit
-
twill:Web 访问的自动化工具,有命令行界面和 Python API 。可以填写表单、支持 cookies 等,因此可以用作 Web
的自动化测试工具。-
mechanize是一个与之类似的东西,不过似乎使用起来比 twill 复杂一些,并且即使是这东西也仍然不支持
Javascript 的执行。
-
mechanize是一个与之类似的东西,不过似乎使用起来比 twill 复杂一些,并且即使是这东西也仍然不支持
-
pyv8:这是 Google V8 Javascript 引擎的 Python 封装,也就是说可以利用这个桥接器在 Python
里头运行 Javascript 代码。
5.4 网页解析
- chardet 一个猜测网页编码(比如utf-8还是gb18030)的库,会根据HTTP参数、HTML标签、XML标签中的相关声明来进行猜测。另有一个非Python实现的Enca也可以提供类似的功能。
- µTidylib 著名html整理、排错、自动修正工具HTML Tidy Library的Python封装。通常在正式开始分析html之前,先用这个东西预处理一下,后面的工作会轻松、准确得多~
5.5 多语言支持
- Python for CJK 提供与python有关的CJK语言支持功能:转码、显示之类。
5.6 网络服务
- Tornado 非阻塞、高性能、可扩展的 Web Server 实现,源自FriendFeed。
- Scapy:似乎是一个能够控制底层网络封包的交互式Python工具,对网络协议分析应该很有用。
5.7 协议封装
-
Crypto python的加解密扩展模块;
作者: phenyl
- 该日志由 phenyl 于11年前发表在综合分类下,最后更新于 2013年02月06日.
- 转载请注明: Python参考资料 | 学步园 +复制链接
抱歉!评论已关闭.