用空格还是制表符缩进有什么好争的?

标签:Python

今天看到V2EX有人在争Python源码应该用空格还是tab,不想进去插话,于是写在这里吧…

就我本人而言,我是习惯tab的,原因很简单,几乎所有的程序语言都推荐使用tab来缩进。
单独使用Python还没什么,但如果混合其他语言的话,就会觉得别扭了。
举个最简单的例子:在使用Python模板时,Python、HTML和JavaScript代码是混合在一起的,后者我都是用tab来缩进,我不可能单独在写其中的Python代码时敲几下空格。

StringIO就是个悲剧

标签:Python

由于发现list.append()方法很慢,于是去测试了一下,顺便也弄上了StringIO,结果发现StringIO的性能太差了,还不如字符串相加。


测试取的是一个200多行50多k的网页,每次加一行来测试速度,代码如下:

在GAE上用Google日历API发短信

标签:Google App Engine, Google Calendar, Python

2年前就发现Google日历可以免费发提醒短信,最近在做Doodle时也想拿GAE来调用GData API发短信,于是就去研究了一下文档:
《在 App Engine 上使用 Google 数据 API》
《Authentication in the Google Data Protocol》
《AuthSub in the Google Data Protocol Client Libraries》

简单来说,要用Google Data API分为2步:验证和访问资源。

db.Property机制解析

标签:Google App Engine, Python

最开始接触GAE的API时,就对它的Property很感兴趣。因为我明明只是在Model定义时设置了类属性,但是它的实例的属性却必须和类属性的类型一致,还要接受各种检查之类的。只不过当时Python了解不深,看不懂其中的奥秘,而如今总算可以把它弄懂了。

Expando比Model的反序列化更花时间

标签:Google App Engine, Python

写了这样一个测试
from time import time

class Comment(db.Expando):
	email = db.StringProperty(required=True)
	content = db.TextProperty()
	format = db.IntegerProperty(default=0, indexed=False)
	approved = db.BooleanProperty(default=True)
	time = db.DateTimeProperty(auto_now_add=True)
	mod_time = db.DateTimeProperty(auto_now_add=True, indexed=False)

t=time()
Comment.all().fetch(1000)
print time()-t
从后台的执行情况来看,cpu时间是11078~11799ms。改成db.Model后,cpu时间是10319~10959ms,差不多少了0.8秒。

« 看看还有什么好玩意