这几天在研究Python,据说类库特别全,移植性很好,于是就想写个程序练手。过程中有想点法,记下来。
1。开发环境简单
我是在WINDOWS下面开发的,用的是2.6的IDE,可能VS工具用习惯了,感觉这个IDE做的相当简单,很少有智能提示,即使偶尔有,也要半天的时间,还不如我自己打字快。
缺少必要的语法检查功能(或许是我还没找到),每次想检查语法问题,都要运行一下才知道。有时候程序很长,半天才提示你出错了。这或许是解释型语言的缺点吧。
解释环境经常出现问题,语法都正确的情况下,大概有三分之一的时间解决器会出错。只有很无奈的重新启动。我这是小程序,重启一次成本不大,如果是大程序,那岂不是很惨?
2。中文帮助比较少
习惯找中文的帮助,结果发现不是太老就是没有。只能看下自带的帮助文档。对帮助文档怎么评价呢,做的还行,例子也特别生动,可能是英文帮助做的不错,不懂英文的人也能看懂,所以中文的文档就很少有的翻译了。
3。类库确实很强大
之前做网页游戏的外挂,遇到的都是一些JSON或AMF的数据,用C#2。0做,解析这些数据结构还要自己写方法,很是麻烦。但小小的PYTHON只用包含几个类库就可以很好的解析出数据来。
4。总结
语言本身不错,开发环境太差,希望有强人可以开发出更好用的环境。
================================================================
记录下几个小技巧,这些都是在写程序过程中从网上或帮助文件档中查到的,对以后肯定有帮助。
1。解析JSON数据
#! /usr/bin/env python
#coding=utf-8
import json
s = '[{"name":"鸟巢","point":{"lat":"39.990","lng":"116.397"},"desc":"奥运会主场地"},{"name":"北大乒乓球馆","point":{"lat":"39.988","lng":"116.315"},"desc":"乒乓球比赛场地"},{"name":"北京工人体育场","point":{"lat":"39.930","lng":"116.446"},"desc":"足球比赛场地"}]'
locations = json.loads(s)
print str(len(locations))
for location in locations:
print location["name"]
print location["point"]["lat"]
2。获取UNIX类型的时间(因为这次的写的游戏外挂要13位的时间,所以后面加了一个0)
#生成时间,要import time
def GetTime():
s=time.time()
ss=str(s*100)[0:12]+'0'#去掉小数点,再加一位
return ss
3。给全局变量赋值(如果直接引用,会发现,程序会把它当成成员变量。应该按下面这么调用)
假设前面已定义全局变量sessionkey,在方法中引用是要先用global声明
global sessionkey
sessionkey=sessionkeycontent[begin+19:end]
4。登录网站保存cookie
cookiejar = cookielib.CookieJar()
#登录校内方法
def login(email,pwd):
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))
params = {'email':email, 'password':pwd}
data = urllib.urlencode(params)
fobj = opener.open('http://login.xiaonei.com/Login.do', data)
5。不同UnicodeDecodeError: 'ascii' codec can't decode错误解决方法
当用print打印不同编码格式的字符串时,如下面代码
name=u'汉字'
print name+'试试'
肯定会提示错误,这时只要将后面一句变成print name+u'试试' ,即可
6。启动IDLE时不时会出现socket error,按如下方法解决
在Python的安装目录下,我这里是C:/Python24/Lib/idlelib/PyShell.py,找到这个PyShell.py,查找到use_subprocess = True,将后面那个改成False。(这个问题困扰了我两天了,终于解决了,眼泪花花滴)