前几天我说过,我们项目经理在新加坡的一个“支持视频的在线游戏”项目中,用Python做了服务器,速度要求高的核心部分用C做扩展。
今天看到了他们那个服务器的Python源码,一看吓一跳。
大家讨论的Python代码的优雅,在他们这个项目中完全看不到,满眼的C、C++风格的Python代码,丑死~跟蔡学镛那段代码差不多。
不过让我感慨良多啊,人家只要会一些语法就用它来做项目,我们呢?很多人学得很深入了,结果却总说它不适合拿来做大项目。我们在等什么啊?
人家学东西是拿来用的,我们是拿来看的。
说完了。下面把昨天 xyzxyz1111(如是我闻) 老兄回答我的一个问题贴上来,大家共赏:
问题是,如何做到下面这个功能?
a='abcdefg'
for x,y,z in a:
print x,y,z
要求打印出:
a b c
d e f
g None None
xyzxyz1111(如是我闻) 给我的回复:
class ItemIter:
def __init__(self, l, n = 3):
if type(l) in (type(''), type(u'')):
self.lElement = [c for c in l]
else:
self.lElement = l
self.number = n
def __iter__(self):
if self.number <= 1:
return self.lElement.__iter__()
else:
self.idx = - self.number
return self
def next(self):
self.idx += self.number
lRet = self.lElement[self.idx:self.idx+self.number]
if len(lRet) == 0:
raise StopIteration()
lRet += [None for x in range(self.number-len(lRet)) ]
return lRet
a='abcdefg'
for x,y,z in ItemIter(a, 3):
print x,y,z
他这个类很好哦,个数不限,还可以这么用:
a='abcdefg'
for x,y,z,w in ItemIter(a, 4):
print x,y,z,w
还是咱中国人聪明呀,问了个老外他没回答出来。。KKKK偷笑。。老外看了这代码说“太棒了”。知道这老外为什么说中文吗?因为他是新加坡人。KKKK
6 个解决方案
#1
人家学东西是拿来用的,我们是拿来看的。
汲取教训!
汲取教训!
#2
说得有理啊
#3
外国人很会做项目
#4
说的有理,我的这个项目就毫不犹豫地开始用 Python 了。
#5
说到点子上了!
#######################
人家学东西是拿来用的,我们是拿来看的。
#######################
人家学东西是拿来用的,我们是拿来看的。
#6
是阿,说得太对了。。。。。。学以致用
#1
人家学东西是拿来用的,我们是拿来看的。
汲取教训!
汲取教训!
#2
说得有理啊
#3
外国人很会做项目
#4
说的有理,我的这个项目就毫不犹豫地开始用 Python 了。
#5
说到点子上了!
#######################
人家学东西是拿来用的,我们是拿来看的。
#######################
人家学东西是拿来用的,我们是拿来看的。
#6
是阿,说得太对了。。。。。。学以致用