新手如何学习Python
很多时候当我们开始学习一门新的语言时,总是遵从着这一步骤。但是,如果你准备学习Python,那么你首先要做的就是打破这一惯例。
在Python的世界里,你不可能也没有一本书让你起步,因为关于Python学习的出版物实在是太少了,少到你根本找不到一本合适的(PS:当然,这里我撒谎了,其实还是有几本可以满足你的求知欲望)。
我学习Python是因为我不想再为了Java的“繁荣”而投入太多精力(PS:我从大学二年级开始了Java的历程,当时Java1.2刚刚发布,很多优秀的设计思想让我痴迷;但是到毕业时,我几乎荒废了他,他太过臃肿了。),也不想把因为别人的热捧而追从Ruby社区,更不想期待PHP6会有如何优秀的改进,所以我最终选择了 “简约而不简单”的Python作为一个目标(PS:要知道2008年,Python会发布一个全新重写的版本Python3000噢^_^)。偶然的一 天,我看到《简明Python教程》这本书(PS:这是一本遵从创作共享协议的电子书,英文名为:《Byte of Python》),他的简约明了让我这个Python白菜很快的就了解了Python语言的基本原理和编程;当然,单单读懂《简明Python教程》是不够的,因为他仅仅是一本入门书。继而我又为了继续的学习寻找更好的书,去网上书店转了一圈也没发现什么有价值的参考,最后再圈子里询问。最终让我找到了另外一本伟大的电子书《深入Python》(PS:这也是一本遵从创作共享协议的电子书,不过他有印刷体版本可以购买,英文名为:《Dive into Python》),这是一本详细的Python编程语言“教科书”,如果你能读懂他,那么你的Python编程肯定是“小牛”级的了。
学过这些,我想基本是可以应对需求了,偶有不解你就要进一步阅读Python手册咯:-)如果你读过这两本书并且读懂了这两本书,还想继续有所学习的话,那麽我推荐给你另外一本印刷体的图书《Python网络编程》(PS:要知道他的作者是一位Debian Linux的资深开发者John Goerzen(美)),这是由电子工业出版社社翻译出版的一本书,主要关于Python网络方面的设计编程,翻译质量亦不错噢。
当你读完这三本书后,基本上你就是“中牛”,缺乏的只是积累和经验。
老鸟经验之谈[ ]
- 选择Python版本和发行版
Python目前的主流版本很丰富,2.5,2.6和新的3.0都有人用。那么到底该装哪个版本好呢?
经过一段时间的使用我强烈的意识到目前的情况下(今天是09年5月24日),绝对是2.5版比较合适。
主要是因为非常多的第三方库目前只有对应2.5的简单安装包。虽然理论上2.5下能用的库2.6也肯定没问题,但是实际上总有各种各样的问题。例如pyinstaller到现在也是只支持2.5。在这个问题上我可以非常坚定的讲:装2.5肯定没错,你以后会因为这个感谢我的。
Windows下是没有自带Python的,那么选择一个发行版是必须的。
常见的发行版有Python.org的官方的发行版,ActiveState的ActivePython这两个。
之前我一直装的是后面ActiveState的哪一个,后来因为要用到numpy,找到了这个Python(x, y)
用上这个以后我对Python的好感是更上一层楼。
这个发行版有点大(接近400mb),但是里面附带了科学计算方面的很多常用库,以及著名的PyQt 。可能有人觉得科学计算方面的库不太用的到,但像nump,scipy等一干库被很多其他库依赖,还有很多文档相关的库如sphinx没有的话也会很头痛。同时PyQt对于新手来说也是出名的难以正确配置,而python(x, y)装好了以后直接就能用,感觉非常棒。同时该发行版还附带IDE和一些有用的工具。其中IPython完全替代了Python自带的那个难用的互动Shell。
Python自带的shell应该还是蛮常用的。那么这个IPython就相当于它的超级加强版:带彩色显示,语句自动完成,额外的常用命令等等。其中tab键自动补完非常强大。比如在上图中我输入sys. (注意有个点),然后按tab键,这时IPython会显示出sys下所有的属性和方法,这肯定就是你我朝思暮想的超级自动补全。而且应为是在互动模式下,语句是实实在在被执行的,很好理解这里的自动补全是最完整的,比单靠分析代码的方式效果好很多。
- IDE的选择
我一直认为选择一个好用的IDE绝对能使编程乐趣加倍,而对我来说好的IDE最重要的一点就是代码补全和自动文档显示。我尝试过的IDE/编辑器有Komodo Edit,UliPad,Pydev最后还是选择了Pydev这个看似有点笨重的Eclipse集成。
Pydev的基本使用跟其他的差不多,在代码补全方面有点小技巧:
Pydev会自动通过代码分析来进行一定程度上的代码补全,但是很多需要运行时才能获得的信息是不能这样获得的。通过在Pydev中设置Forced Buildins来设置,能取得更好的效果。试了几次发现基本上大部分库都能获得自动补全,同时会显示docstring,效果相当不错。
- Python中String/Unicode的编码问题
Python中的String和Unicode都提供了decode和encode方法,让人很容易混乱,然而出现乱码和UnicodeEncodeError这种情况很让人崩溃,那么下面介绍些个人心得。
Python中的String的地位就相当与C中的char *做的字符串,储存的可以使ASCII字符串,也可以是未经处理的数据。所以String中的每一个值都像是一个char。而Unicode中则将每一个元素认为是一个真正的Unicode字符。
关于decode/encode方法。decode可以理解为decode from,由一个String调用decode方法将他自己按传入的编码名来decode成为一个Unicode串。encode可以理解为encode to,由一个Unicode 来调用encode方法将他自己按照传入的编码名来encode为一个String串。所以String就是输入输出时使用的,而Unicode则是程序内部进行处理时的东西。
对于编码是产生Error,则可以通过在Encode时传入错误处理参数 'ignore’/ ' replace’ 来避免。
参考资料[ ]
- 搜集整理于互联网
Python使用手册导航 | |||||
---|---|---|---|---|---|
|