Python二三事 - 接触Python(x,y)

转自博客大巴的一篇文章

之前那篇文章已经过去一年的时间了。期间一直有机会是使用Python来做些各种各样的事情。一年下来,个人感觉Python实在是一个有意思的语言,除了容易上手外,Python还有不少特性可以帮助你很华丽的解决你的问题。当然期间还是碰到很多搞笑而又让人困扰的问题。在这里我就总结一下这段时间的使用经历,希望对和我一样的Python新手有所帮助。

1.版本,安装等问题

之前写到的推荐用Python 2.5,到现在看来还是很正确的。虽然到现在(今天是2010年5月2号)Python3k已经到3.1.2,但是Google App Engine使用的是2.5.2,很多虚拟主机提供的仍然是2.5版本。不过好消息是之前提到的Python(x,y)现在已经使用的是2.6版本了。而且App Engine也能在2.6下正常使用。所以我机器上现在跑的是Python2.6,感觉非常棒.

如果你现在要重新安装Python的话,这里有两个建议。如果你是高校学生,了解或者听说过MatLab这类科学计算相关的东西,那不妨试试Python(x,y),之前的那篇就有讲过这个。现在又有了篇很棒的中文教程把里面大部分模块全部介绍了一遍(地址在后面哦)。所以,当别人作业都用MatLab做的时候你拿Python做个交上去,其实也蛮叼的... 如果你是一般用户,那么不妨安装ActivePython,这个比python.org提供的win32版本的好处在于它自带了一个win32的库,并且帮你设置了几个常用的PATH。
另外要提到的是关于Python第三方库的安装。谨防有人不知道这个我在这里讲一下,通过setuptools你可以使用类似apt-get的方式安装几乎所有的Python库。下载对应你安装的Python版本的setuptools并安装。
以django为例,在cmd中运行 easy_install django 就可以看到它自动上网找到最新的版本并下载,分析它依赖的其他库并下载安装,最后就自动装好啦。
如果cmd提示没有找到easy_install,那么检查一下你的Python目录下Scripts目录中有没有easy_install.exe这个文件,以及C:/python2*/Scripts有没有加入到PATH环境变量中。
其实setuptools虽然流行但是并不是那么好,有很多资深人士建议不要使用它。类似的工具还有pip,以及pep376最近得到接受,说明将会有一个官方的类似工具的实现。不过说实话setuptools的却很好用,像我一样的初学者不妨先用起来把。

2.Python开发好用的工具

之前提到过IPython 。现在我对这个的依赖特别大,每次需要开Shell的时候我都是用的这个。事实上,使用IPython你可以用一个更为互动的办法来进行Python开发。

比如你在写一个函数的时候,你对其中一个对象不是很了解,或者它的文档不是很全,你不知道要调用它的什么方法。这时候我们可以让这个函数先返回这个对象,然后开IPython再import你这个函数,调用它,把你感兴趣的对象拿来看看它到底有些什么方法,调用以后是什么结果。在django开发中,你会发现如果你安装有IPython的话,用manage.py shell打开的shell就会使IPython的哦。
另外如果是在Windows上使用IPython的话,首次运行应该回是没有颜色加亮的并且回提示没有readline,这种情况下是没有任何自动补全功能的。你需要下载安装windows下的pyreadline,之后再运行IPython就可以啦。
我后来又有机会要在Linux下进行Python开发,虽然Linux下面可以跑Eclipse+Pydev,但既然用到了Linux就想尝试下传说中的Vim。后来发现用Vim写Python其实也非常棒,Vim有各种牛叉的插件,能把Vim武装成一个相当强力的Python开发工具,包括语法高亮,自动完成甚至有语法检查。最重要的是其实配置方法也不是那么复杂。
下面会比较详细的介绍如何配置Vim。如果你还不知道Vim是什么,请看看这篇文章
如果你对Vim感兴趣的话,强烈建议在一个流行的Linux环境下学习使用。象Ubuntu下,Vim各种配置能够轻松的搞定,到Windows下有些问题会很让人很恼火,以至于打击学习积极性。如果你还没有安装Linux,那么建议你马上找懂哥来帮你装个最新的Ubuntu,或者自己装Wubi试试。在接下来的文章中,我们要尝试在Ubuntu下配制出一个媲美Pydev的Python开发环境。熟悉Vim的朋友可以跳到下一段介绍Vim插件的地方。
配置好Ubuntu后打开终端,输入

sudo apt-get install vim vim-python

这样能安装一个带Python支持的Vim。输入vim打开vim,之后我们就要来熟悉这个软件了。
我个人比较愿意在bash下面直接使用vim而不是用自带窗口的gvim,因为后者配置起来回稍微复杂一点点。关于Vim的基本操作和配制方法建议自己在网上搜搜,自己动手来弄,否则就算你配置好了也不一定会用。所以,如果你是第一次使用Vim,那么请你熟悉好基础操作以后,打开~/.vimrc,清空里面所有内容,再根据自己需要的东西来配置。
这边有两点我觉得需要特别强调下,首先修改自己的Vim配置最好参照一些其他人的配置来弄,比如这份注释良好的配置文件。在配置vimrc的时候,我个人感觉最重要的就是你要懂得你加入的每一行到底有什么功能,这样之后用起来感觉不爽才知道要改哪里。千万千万不要盲目的添加。
第二,网上搜Vim教程的时候很容易看到有些推荐CTags,TagList这两个插件。在这里我强烈建议你,先不要尝试配置这两个相关的东西,因为对于新手来说这两个插件比起一般的要难得配置。所以我建议,先不要管这两个,CTags可以用

sudo apt-get install ctags

装上ctags exuberant(其实你不需要知道这是啥...)就不要在管他了。
恩现在开始介绍几个插件了。

pythoncomplete.vim  按上面的介绍配置一下,在自动输入的时候按Ctrl-X, Ctrl-O就有很强力的自动补全了。 python.vim  加强语法的高亮。
pyflakes.vim  很棒的语法检查,分析你的语法看避免低级错误。注意这个在Vim7.2下才有用,如果是7.1则一点效果都没有...

其他比较辅助的 
supertab.vim  只用tab就能完成大部分补全,这个要配置一下就会很好用
supertab continued 这个是比较新版的supertab,相比起来原来那个可以完全不用配置,装上去就好。
acp.vim 像一般IDE一样的自动弹出补全菜单。注意用这个的话回引发html编辑时的一个bug(其实也不是acp的问题),请自行搜素一下来解决...

之后在 vimcolorschemetest 挑一个你喜欢的颜色,就能开心的编Python啦~
最后效果如图:(主题是wombat,上面红线是pyflakes的警告,自动补全很帅气啊啊啊)

虽然Vim用来编辑已经很不错了,但是debug的时候想要单步,断点的时候还是让人很困扰。幸好有 winpdb

虽然它是win开头的,但其实是一个跨平台的Python调试工具,用起来跟一般IDE没什么差别。Ubuntu下

sudo apt-get install winpdb

就可以了。之后需要调试的时候欲行

winpdb lalala.py

就好了。而且它在Windows下也是很好用的。

3.编码问题

目前遇到Python中最恼人的事情,果然还是编码的问题。好好的英文都可以,只要换Unicode就又要一大堆问题,这实在不符合Python的风格。以下介绍下一些个人经验,关于如何尽量避免遇到Python中的编码问题,和解决这类问题的一些方式。

首先,是关于stringunicode的区别。在Python3k中,这两个东西分别命名为了bytesstring,这样分开就比较容易理解了。string中存储的东西是没有编码信息的字节序列,相反unicode中的东西就是记载了编码信息的字串
还是这样讲,输入输出的时候用string,包括序列化的进出也要用string,但是程序内部都用unicode来处理。两者的转换还是通过encode和decode来进行的。输入时候unicode由string.decode(解码)生成,输出时候的string由unicode.encode(编码)生成。
这里特别提一下我现在还是不知道在像 u"中文哥哥" 前面那个u到底有啥用,但是我感觉我完全没有遇到哪个问题是加个u就解决了的... 像这种情况最好还是用string存储,再用decode来获得相应的unicode。

其次是关于代码,命令行下的unicode问题。

首先介绍传说中的encoding magic string。其实就是这样的一行

#!/usr/bin/python
# -*- coding:  -*-

这里第二行就是用来定义代码的编码的,详细信息可以看pep263
如果你代码中会有中文,强烈建议你在代码中加上这个。要正确的使用这个,首先你要先搞清楚你代码的编码到底是什么。怎么做到这个我只有个很蠢得办法,如果你有notepad++/emeditor的话,打开你的代码右下角就有你文件编码。
事实上你看到你文件编码是gb2312,gbk或者latin-1这样的时候,你就应该要惊慌了。Python3k的代码已经默认认定编码是utf-8(2.x中貌似是默认认为是ASCII?),而事实上很多第三方库(比如BeautifulSoup,django)默认就是用的utf-8,实际应用中utf-8效果也很好,你可以想象一下中日韩加火星文一起正确显示出来的美妙场景。
所以如果你发现你的代码不是utf-8,请想办法把您的代码转换为utf-8吧。用些高级的编辑器就会很容易在菜单里面找到转换代码的选项哦。特别提醒下,PyDev保存的文件貌似默认编码就是GBK。

再就是命令行下的编码问题。
你在windows下使用python shell,就会发现urllib2这类取出来的中文很难有情况能直接正确显示出来的。这是因为windows下的cmd默认编码貌似是GBK的,而linux下面就是utf-8的,所以bash里面乱码稍微少点。
所以说当你在使用命令行的时候出现编码问题的,要把这个情况考虑进去。有时候虽然shell下会有编码问题,但如果直接写文件说不定就搞定啦。

最后介绍一个神奇的工具------铛铛铛------ chardet  。
你可以用之前的

easy_install chardet

来安装。网站上简单的教程就说明了这个的用法,
它会分析你传入的字串符(里面是没有编码信息的哦),根据里面的模式,来猜测这个字串可能是什么编码的(confidence就是他猜测的信心)。你可以再用它返回的编码来decode。
说起来这么神奇,其实这个还是用来除错用的。如果你发现一段字串符的confidence不高,而且而且编码很诡异,或者干脆出错或者返回未知,那说明你给的这串字要么是你乱搞来的,要么就是多次错误的编码解码搞出来的,这种情况就得从别的地方找问题了。

4.扩展阅读

这里是一些之前提到的,和一些Python相关的我认为很棒的资源。
用Python做科学计算 (备用链接) 
先打开看一下,你还有在别的地方看到过做的这么棒的reST编出来的中文教程么。这个把Python(x,y)里面所有的模块基本上都讲了一遍,我觉得外国人肯定都希望这个有个英文版的。
今天过去看发现他要出书啦,出来我一定买一本。

PyMOTW 
这个名字看起来像个Python库(其实它还真的是一个...),但他总体来说其实是一份文档,"Python每周一个模块"。
作者持续几年每周介绍一个Python标准库中的库。你可以把他看做是一个Python标准库文档的一个很棒的补充,当你看标准库中的介绍看的云里雾里的时候,不妨来这边找找相应的介绍。
因为这里的例子给的很全,而且基本上你用的到的偏门的库这里都有介绍哦。另外一个好消息是PyMOTW有一份很棒中文翻译版

reddit.com/r/python 与 planet.python.org  
比如说你想看看Python相关的文章,但又不要那么技术,那么不妨去这两个地方看看吧。就我个人经历来说每次都能找到很多好东西,而且reddit就是一个网络上最完美的社区啊啊啊啊啊啊

reindent.py
如果你需要修改一段别人的Python代码,你打开后发现他马的有的地方缩进三个空格有的地方缩进用tab,别一行一样改了,用这个跑一遍就好啦。
应该是只要能正确运行的代码,用这个修改都不会有问题,况且他会自动做备份生成一个***.bak
看看url你会发现这个其实是官方svn里面的工具

另外再想起来什么我会再发到这里的

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值