作为脚本语言Python上手容易,但要学好Python能写出一手漂亮的、Pythonic的Python代码并非一日之功,本文的目的在于推荐一些优秀的Python相关的文章(至于书大家可以看dip、learning python和官方手册去),让你在成长为一名Python高手的路上少走一点弯路。注:文章都是英文的,学好Python读懂英文资料这是必须的了。
九本python书推荐:http://hi.baidu.com/zealot886/blog/item/289f54da5feff30b632798b1.html
1. PEP8 Style Guide for Python Code
排第一的当属Python的编码规范PEP8,这个就不用我多说吧,无论是初学还是高手PEP8都是必须烂熟于胸的。在遵循里面讲述的规则的同时,大家也要记住两句比较特殊的话,不过这两句话千万别滥用了:)
Two good reasons to break a particular rule: (1) When applying the rule would make the code less readable, even for someone who is used to reading code that follows the rules. (2) To be consistent with surrounding code that also breaks it (maybe for historic reasons) -- although this is also an opportunity to clean up someone else's mess (in true XP style).
如果要写Python的C扩展库,你还必须好好学习下PEP7。
2. Code Like a Pythonista: Idiomatic Python
文如其名,本文篇幅较长,但非常非常实用。本文介绍了一系列Python约定俗成的用法和技巧,学习本文能让你写出来的Python代码马上上一个档次,让你成为一个真正的Pythoneer。
3. PEP318 Decorators for Functions and Methods
在Python的世界里decorator是非常常见的,常见的比如auth、cache都会提供decorator,decorator所实现的功能就是修改紧接 decorator之后定义的函数和方法,你可以根据自己的需要给一个已有的函数和方法添油加醋。
4. Python regular expression documentation
掌握正则表达式是编程人员的必备技能,这是re模块的官方文档,用到正则表达式的时候要常来翻翻。Python的正则表达式跟别的语言函数用法有点 不一样,因此也有人抱怨说Python的re模块不好用,文章开头关于正则表达式规则部分可以当正则表达式的入门教材,如果你还不知道正则表达式是个什么 东西的话。个人觉得Python的re模块非常强大的,举个有点意思的例子,比如VERBOSE的正则表达式还支持在正则表达式中间加注释说明正则表达式 的具体含义,因为正则表达式通常都象天书一样比较难懂,因此这个功能显得非常有用。
a = re.compile(r"""\d + # the integral part \. # the decimal point \d * # some fractional digits""", re.X)
5. PEP333 Python Web Server Gateway Interface v1.0
如果你要用Python来做Web相关的开发(对大多说人来说主要就是指Web运用)WSGI是必读的,WSGI是Python web server、application、middleware之间的官方规范标准,现在主流的Python web server和framework都肯定支持WSGI的。只有了解了WSGI你才能更好的理解Python的web framework的工作机制、middleware为啥可以串联起来、web server是怎么跟web application交互的。WSGI有两个为人诟病的地方,一是不支持异步,Tornado是一个异步的Web server,但是若要在上面运行WSGI的framework如Django,则Tornado的异步特性完全用不上;二是WSGI v1.0不支持Python3.x,为了支持Python3.x,有两篇还在Draft状态的PEP文档PEP3333和PEP444可供参考。
6. How To Use Linux epoll with Python
更深入一点,如果你要做服务器端的编程的话,此文可以让你深入理解Python的同步、异步socket编程模式。假如你觉得Tornado的源码比较费解的话,读读这篇文章对你会很有大的帮助。
7.另外还有一些比较重要的文档,这里不做详解,有兴趣的同学可以去看看:
- Python Tips, Tricks, and Hacks
- Python Docstring
- Coroutines via Enhanced Generators
- Greenlet documentation
- Unifying types and classes in Python(要×××)
- Python Attributes and Methods
- Python Types and Objects,中文版见:http://wiki.woodpecker.org.cn/moin/PyTypesAndObjects
- Python best practices
- PEP 20 (The Zen of Python) by example
- Google Python Guide
- 待补充..,欢迎大家推荐。
转载请注明出处:http://feilong.me/2011/01/recommended-entries-for-you-to-master-python
根据本人的学习经验,我总结了以下十点和大家分享:
1)学好python的第一步,就是马上到
www.python.org
网站上下载一个python版本。我建议初学者,不要下载具有IDE功能的集成开发环境,比如Eclipse插件等。
2)
下载完毕后,就可以开始学习了。学习过程中,我建议可以下载一些python的学习文档,比如《dive into python》,《OReilly
- Learning Python》等等。通过学习语法,掌握python中的关键字语法,函数语法,数学表达式等等
3)学完了基本语法后,就可以进行互动式学习了。python具备很好的交互学习模式,对于书本上的例子我们可以通过交互平台进行操练,通过练习加深印象,达到学习掌握的目的。
4)
通过以上三个步骤的学习后,我们大致掌握了python的常用方法、关键字用法以及函数语法等。接下去的学习上,我们就可以着手学习常用模块的使用,
比如os,os.path,sys,string模块等。我们可以在交互环境中先熟悉使用其中的函数,如果遇到函数的使用上的问题,可以参考python
安装后的自带chm帮助文件。
5)为了更好得掌握python,我们的学习不能只是停留在学习一些语法或者api阶段。在此阶段中,我们可以
尝试用python解决我们项目中遇到的一
些问题,如果项目不是用python开发的,那我们可以想想能不能用python制作一些项目组可以使用的一些工具(utility),通过这些工具简化
项目组成员的任务,提高我们的工作效率。如果没有项目,我们也可以自己找些题目来自己练习练习。
6)经过以上锻炼后,我们的python知识
水平肯定是越来越高。接下去的学习,我们就要更上一层楼。为了学以致用,真正能应用于项目开发或产品开发,我
们还必须学习企业应用开发中必须要掌握的网络和数据库知识。在此的学习就不光是python语言本身的学习了,如果之前没有学习和掌握很网络和数据库知
识,在此阶段我们可以借此机会补习一把。
7)在此,我想我们对python的使用以及信手拈来了,即使忘了api的用法,我们也可以在短时间
内通过查看文档来使用api。那么接下去,我们要学习
什么呢?那就是设计能力,在学习设计能力的过程中,如果对类等面向对象的概念不清楚的,在此阶段也可以学习或加以巩固。就像飞机设计师设计飞机通过学习模
型来设计一样,我们也可以通过学习书上的经典例子来学习设计。等有了设计的基本概念后,我们就可以着手设计我们的程序了。在此阶段中,我们重要的是学习抽
象的思想,通过隔离变化点来设计我们的模块。
8)到此阶段,我们已经是真正入门了。在接下去的工作中,就是要快速地通过我们的所学来服务项目
了。在此阶段,我们除了掌握python自带的模块外,我
们最好在掌握一些业界广泛使用的开源框架,比如twisted、peak、django、xml等。通过熟练使用它们,达到闪电开发,大大节省项目宝贵时
间。
9)你已经是个python行家了,在此阶段,我们在工作中会遇到一些深层次的、具体的困难问题。面对这些问题,我们已经有自己的思考方
向和思路了。我们
时常会上网观看python的最新发展动态,最新python技术和开源项目,我们可以参与python论坛并结交社区中一些python道友。
10)你已经是个python专家,在此阶段你应该是个python技术传播者。时不时在组织中开坛讲座,并在博客上传播你的python见解。你会上论 坛帮助同行们解决他们提出的问题,你会给
www.python.org
网站提出你的宝贵建议,并为python语言发展献计献策。
任何知识的学习无止境,python的学习也不另外。在掌握python的用法、api和框架后,我们更要学习设计模式、开发方法论等