07 2013 档案
摘要:class LoopError(Exception):passrs = ''try: for i in range(1, 3): print i rs = 'one ' if i == 1: for j in range(12, 22): print j if j == 13: rs = 'bbs' raise LoopErrorexcept LoopError: #跳出,遇到LoopErr...
阅读全文
摘要:def t(b,c): print b print cd = {'b':32, 'c':321}t(*d)t(**d)t(*d) d的键将被分解传递到函数t中,打印的是键名b, ct(**d) d的值被分解成 b = 32 , c=321 传递给函数,打印的是32和321
阅读全文
摘要:1 #coding=utf-8 2 3 from twisted.internet import reactor,protocol 4 5 class QuickClient(protocol.Protocol): 6 def connectionMade(self): 7 print dir(self.transport.getPeer()) 8 print "port:%s type:%s "%(self.transport.getPeer().port, self.transport.getPeer().type) 9 pri...
阅读全文
摘要:input = raw_input('\033[36;1mShell command[q to quit]:\033[0m')
阅读全文
摘要:用__new__与__init__不同,通过继承内建类型对象,__new__可以用来创建一个简单的新类型,在__new__加入一些动作以完成创建。class RoundFloat(float): def __new__(cls, val): return super(RoundFloat, cls).__new__(cls, round(val, 2))以上代码创建了一个保留2位小数的四舍五入的浮点数
阅读全文
摘要:事實上Deferred的確就像是一連串的動作,用callback的形式被串在一起,我們用deferred或許可以這樣寫d.addCallback(洗菜)d.addCallback(切菜)d.addCallback(放到鍋中)d.addCallback(加鹽)如果只是這樣看起來就像是單純的責任鍊,做完一件事情把結果往下丟,但是,如果發生例外呢?def 切菜(data): raise 切到手指('Ouch!')如果只是單純的責任鍊,會從最初呼叫它的地方丟出來,如果只是一般的單thread程式這樣跑下來,其實加上一個try except就可以抓到了,但是twisted是處理非同步的事
阅读全文
摘要:l = map(chr, xrange(256)) #将ascii转为字符串_idmap = str('').join(l)del l# Construct a translation string_idmapL = None #定义一个全局变量def maketrans(fromstr, tostr): """maketrans(frm, to) -> string Return a translation table (a string of 256 bytes long) suitable for use in string.trans
阅读全文
摘要:def capwords(s, sep=None): """capwords(s [,sep]) -> string Split the argument into words using split, capitalize each word using capitalize, and join the capitalized words using join. If the optional second argument sep is absent or None, runs of whitespace characters are replaced
阅读全文
摘要:# Some strings for ctype-style character classification c风格字符串whitespace = ' \t\n\r\v\f' #空白字符 \t 制表符 \n换行lowercase = 'abcdefghijklmnopqrstuvwxyz'uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'letters = lowercase + uppercaseascii_lowercase = lowercaseascii_uppercase = uppercaseascii
阅读全文
摘要:def make_addr(addend): def addr(augend): return augend + addend return addrp = make_addr(23)q = make_addr(42)print p(10)print q(10)
阅读全文
摘要:import optparsedef parse_args(): usage = """ How to use parser options """ parser = optparse.OptionParser(usage) help = "The port to listen on." parser.add_option('--port', type='int', help=help) parser.add_option('--iface', default=
阅读全文
摘要:由于python没有接口概念,所以zope 提供了个第三方库开源使用,下面简单介绍zope.interface.implementer的使用直接看例子,下面例子是在twisted里摘录的接口IResolverSimpleclass IResolverSimple(Interface): def getHostByName(name, timeout = (1, 3, 11, 45)): """ Resolve the domain name C{name} into an IP address. """实现BlockingResolv
阅读全文
摘要:一个twisted进程只会有一个reactor反应器,下面我们来看看twisted是怎样实现这个单例反应器的,路径:twisted\internet\reactor.py主要代码如下:import sysdel sys.modules['twisted.internet.reactor'] #删除已经加载的reactor模块from twisted.internet import default #重新安装reactor模块,其实是加载twisted.internet.selectreactordefault.install() 进行安装这样就保证reactor只有一个实例具体
阅读全文
摘要:print会自动添加换行符其它的,没什么区别。有时候为了使用灵活,才会这么用。例如你想把print的内容写向一下log文件,你可以这么做stdout_bk = sys.stdout #备份一下标准输出sys.stdout = open("aa.log", "w") #标准输出重定向到一个文件这样子,print的内容就会全部输向xx.logflog=open("xx.log","w")print>>flog,"sth.toprint"建议用这种形式的重定向一是,所见即所得二是,不用备份
阅读全文
摘要:迭代器lst = range(10) #生成一个枚举列表 从0-9itr = iter(lst) #生成一个迭代器itr.next() #访问迭代器方法遍历迭代器try: while True: val = itr.next() print valexcept StopIteration: pass注意:1、如果对list dict tuple 用for遍历,则for内部自动将之转换为迭代器2、enumerate给迭代器元素生成索引生成器生成器也是迭代器的一种,就是用了yield关键词def get_0_1_2(): yield 0 prin...
阅读全文