2012年5月16日

摘要: 之前学习编程语言大多也就是学的很浅很浅,基本上也是很少涉及到装饰器这些的类似的内容。总是觉得是一样很神奇的东西,舍不得学(嘿嘿)。今天看了一下书籍。发现道理还是很简单的。简单的说:装饰器主要作用就是对函数进行一些修饰,它的出现是在引入类方法和静态方法的时候为了定义静态方法出现的。例如为了把foo()函数声明成一个静态函数1 class Myclass(object):2 def staticfoo():3 ............4 ............ 5 staticfoo = staticmethod(staticfoo)可以... 阅读全文
posted @ 2012-05-16 18:32 很多不懂呀。。 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 当你要加入回调(Callback)功能的时候,代码往往会偏重于回调的实现而不是问题本身了。一个解决方法就是实现一个通用的基础类来解决回调的需求,然后再来实现你为某个事件(Event)所绑定(Binding)的方法(Method)。代码如下:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354class CallbackBase: def __init__(self): self.__callbackMap = {} for k in (getat.. 阅读全文
posted @ 2012-05-16 18:10 很多不懂呀。。 阅读(9993) 评论(1) 推荐(0) 编辑
摘要: Twisted异步编程并发编程介绍等待回应不等待数据非阻塞调用callbackDeferredDeferred解决的问题Deferred——数据即将到来的信号callback错误处理:errback结论参考资料这篇文档介绍了异步编程模型,以及在Twisted中抽象出的Deferred——象征着“承诺了一定会有的”结果,并且可以把最终结果传递给处理函数(Python中实现了__call__()方法的对象都可以称之为“函数”,方法也是以函数的形式存在的,因此将所有“function”译作“函数”。——译者注)。这篇文档适合于刚接触Twisted的读者,并且熟悉Python编程语言,至少从概念上熟悉 阅读全文
posted @ 2012-05-16 17:53 很多不懂呀。。 阅读(8019) 评论(3) 推荐(3) 编辑
摘要: 好了,废话不多说,进入正题。今天我们讨论的是twisted的里面的又一大核心基础--deferred。 Twisted 官方称,“Twisted is event-based, asynchronous framework ”。这个“异步”功能的代表就是 deferred。deferred 的作用类似于“多线程”,负责保障多头连接、多项任务的异步执行。当然,deferred “异步”功能的实现,与多线程完全不同,具有以下特点:1. deferred 产生的 event,是函数调用返回的对象;2. deferred 代表一个连接任务,负责报告任务执行的延迟情况和最终结果;3. 对deferred 阅读全文
posted @ 2012-05-16 16:29 很多不懂呀。。 阅读(1469) 评论(1) 推荐(1) 编辑
摘要: 我们想再x秒后执行一个任务,可以使用twisted.internet.interfaces.IReactorTime:from twisted.internet import reactordef f(s): print "this will run 3.5 seconds after it was scheduled: %s" % sreactor.callLater(3.5, f, "hello, world")如果想每x秒就重复执行一个任务,可以使用twisted.internet.task.LoopingCall:from twisted.int 阅读全文
posted @ 2012-05-16 16:18 很多不懂呀。。 阅读(751) 评论(0) 推荐(0) 编辑
摘要: def foo(*args, **kwargs):print 'args = ', argsprint 'kwargs = ', kwargsprint '---------------------------------------'if __name__ == '__main__':foo(1,2,3,4)foo(a=1,b=2,c=3)foo(1,2,3,4, a=1,b=2,c=3)foo('a', 1, None, a=1, b='2', c=3)输出结果如下:args = (1, 2, 阅读全文
posted @ 2012-05-16 15:12 很多不懂呀。。 阅读(6458) 评论(1) 推荐(0) 编辑
摘要: range函数说明:range([start,]stop[,step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。range示例:>>>range(5)[0,1,2,3,4]>>>range(1,5)[1,2,3,4]>>>range(0,6,2)[0,2,4]xrange函数说明:用法与range完全相同,所不同的是生成的不是一个数组,而是一个生成器。xrange示例:>>>xrange(5)xrange(5)>>>list(xrange(5))[0,1,2,3,4]&g 阅读全文
posted @ 2012-05-16 13:52 很多不懂呀。。 阅读(20011) 评论(3) 推荐(1) 编辑
摘要: 乱码原因:因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件。但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了。 解决方法:在控制台打印的地方用一个转码就ok了,打印的时候这么写:print myname.decode('UTF-8').encode('GBK') 比较通用的方法应该是:import systype = sys.getfilesystemencoding()print myname.decode('UTF-8').encode(type) 阅读全文
posted @ 2012-05-16 13:03 很多不懂呀。。 阅读(1843) 评论(0) 推荐(0) 编辑
摘要: isinstanceisinstance(object, classinfo)判断实例是否是这个类或者object是变量classinfo 是类型(tuple,dict,int,float)判断变量是否是这个类型class objA: pass A = objA() B = 'a','v' C = 'a string' print isinstance(A, objA) print isinstance(B, tuple) print isinstance(C, basestring) 输出结果: True True True 另外:isinst 阅读全文
posted @ 2012-05-16 12:57 很多不懂呀。。 阅读(1761) 评论(0) 推荐(0) 编辑
摘要: getattr()函数是Python自省的核心函数,具体使用大体如下:获取对象引用getattrGetattr用于返回一个对象属性,或者方法Python代码 class A: def __init__(self): self.name = 'zhangjing' #self.age='24'def method(self): print"method print" Instance= A() print getattr(Instance, 'name, 'not find') #如果Instance对象中有属性name 阅读全文
posted @ 2012-05-16 11:50 很多不懂呀。。 阅读(75732) 评论(3) 推荐(5) 编辑

导航