Python已经演变为一个庞大的生态系统,由于其底层全部用c写成,而且全部开放源码,因此几乎可以完成其它任何编程语言能干的事情。python虽然简单,但要成为高手也非一日之功。如何通过日常的功课,逐步进行修炼,个人的一些总结,分享如下,不对之处,欢迎指正。
语言:从某种意义上说,python不像是一门编程语言,学习起来是很快的。但里面也有一些高深的东西现在连C++都在学习。但个人认为,使用Python的目的就是为了简单、高效,因此不必过于追求奇巧,在效率、特殊结构、算法上去过分纠结,能使就好。
编辑器:首推Sublime Text,完全符合简单高效跨平台的原则,是必须掌握乃至精通的开发者“神器”。虽然基础界面使用C++写的,但是其插件开发和运行环境都是以Python为基础,对Python的编辑、开发、运行也支持的非常好,还可以使用Python快速扩展出插件,非常方便。但是刚开始的一些习惯跟别的软件不太一样,需要一个适应过程。
pip包管理:可以快速安装各种python扩展包,谁用谁知道。在linux上,只需sudo apt-get install python-pip就可以装上,然后sudo pip install xxx就可以装上需要的组件,效率真是高啊。当然,库里没有的软件,下载来sodu python setup.py install也不难。
py高级图形:总是用控制台的,总是感觉不过瘾,当然python的图形能力也是很强悍的,而且也不是想象中的“脚本语言用图形会很慢”。事实上,python上面的图形界面已经有gtk/wxpython/tkinter/qt等多种支持,不仅速度很好,而且绘制效果相当精美。而且,pyQtGraph可以绘制精细的统计图表,OpenCV这一计算机视觉的知名支持库也有python的版本,包括OpenGL三维渲染/OpenCL高性能计算之类的库也都能通过python调用。
网络服务:django不用说了,估计用的人不少了。Tornado也是一个被知名互联网企业采用的高性能Web服务框架。Google当年的创始人也是python起家的,可能很多人并不知道。google网站的大部分服务仍然是使用python开发的。python的网络能力,可以说是“运用之妙,存乎一心”(不要学坏呀哈!)。
python源码:蛋吃多了,就总想知道鸡长啥模样,这是程序猿和攻城狮的通病。想要了解python的运作机制,推荐看一看陈儒编写的《python源码剖析》,这应该是中国人在语言级别写的第一本到如此深度的书了(请恕本人孤陋寡闻!),哪些搞不懂汇编、编译器原理的童鞋,看看这个也基本能一窥编译器、字节码、虚拟机的端详。当然,到了这个份儿上,书的内容已经是见仁见智了,能理解到什么程度,千万不要为难自己,保重啊!
无限扩展:python这一堆源代码,讲“扩展”好像说不上,因为任何增加的模块都是内核级的,方法也有很多:1、当然是创建一个Python的Class了,import XXlib 就可以使了;2、不用编译源码,通过扩展SDK创建一个扩展包,可以把以前的c/C++库Export到python中使用,这是推荐的方法,pyQt之类都是这样的路数;3、把python解释器连接到自己的程序中,通过脚本操控主程序的功能,pythonQt可以直接将C++的对象映射到python中访问(有点过于强悍了吧?);4、对源码精通的,可以直接把c的库编译了,跟源码编译上去,跟自己的库就没啥两样了。
独立运行:跟那些复杂的安装程序说掰掰吧。python的脚本也可以打包运行的,使用py2exe即可,非常轻巧、几乎没有平台依赖性。很多小巧的工具软件都是这样做出来的,可能很多人没有意识到,python还可以这么玩呐!
数据分析:玩了上面的东东,如果还不过瘾,试试numpy之类的科研人员的工具,再弄出几个图表,甚至于生成几个动画,瞬间“高大上”的感觉(有没有啊?),再通过rpy2(sudo pip install rpy2)调用R语言的模块,提升一下逼格!(不知道啥叫R的,看这里吧:http://www.r-project.org/ 。rpy2的鸡在这里:https://bitbucket.org/rpy2。
恭喜恭喜,你已经步入专业数据分析人员的行列了,这可是未来炙手可热的“坑”啊!
至此,这一“深坑”已经为自己基本挖好了。
跳吧!不要看两边,你将融入这蓝天里!......还是蓝海里?
顺便提一句,最近几年出了个micropython(https://github.com/micropython/micropython),可以在mcu微控制器上运行,以后没准家里的电饭煲运行的是python! 肚子饿的时候,运行一段python脚本,饭就好了,然后发个消息“Hello programmer, your FAN get ready!”。