随笔分类 -  python

摘要:1 #coding=utf8 2 3 import threading 4 import time 5 import logging 6 7 logging.basicConfig( 8 level=logging.DEBUG, 9 format='[%(levelname)s]-(%(threadName)s)-%(message)s',10 )11 12 def worker():13 logging.debug('starting')14 #print 'I am worker:'15 time.sleep(2)16 logging.... 阅读全文
posted @ 2013-01-04 14:29 践道者 阅读(1148) 评论(0) 推荐(0)
摘要:做了一年多的API数据同步操作,今天才发现可以用更方便灵活高效的方式去进行数据同步,就是用生产者、消费者模式处理,把网络提取数据模块当作生产者,生产者生产产品后放到数据缓冲区,数据处理模块作为消费者,监控缓冲区数据状态信息,这样就达到解耦的目的。整理思路,写文档、画图去了~~ 阅读全文
posted @ 2013-01-03 20:20 践道者 阅读(497) 评论(0) 推荐(0)
摘要:代理模式:为其他对象提供一种代理以控制对这个对象的访问 阅读全文
posted @ 2012-12-28 15:39 践道者 阅读(146) 评论(0) 推荐(0)
摘要:装饰器模式:动态地给我一个对象添加一些额外的职责,就增加功能来说,比增加子类更为灵活。应用范围:加密数据、日志记录、过滤器还要注意装饰顺序 阅读全文
posted @ 2012-12-28 11:27 践道者 阅读(139) 评论(0) 推荐(0)
摘要:依赖倒置原则:1、抽象不应该依赖于细节,细节应该依赖于抽象,也就是说针对接口编程2、高层模块不应该依赖低层模块。两个都应该依赖抽象。 阅读全文
posted @ 2012-12-28 10:44 践道者 阅读(211) 评论(0) 推荐(0)
摘要:开闭原则:是说软件实体(类、模块、函数等)应该可以扩展,但是不可以修改。两大特征:对扩展开放、对更改关闭开闭原则为面向对象设计的核心所在,能让设计达到可维护、可扩展、可复用、灵活性好,开发人员应该对程序中呈现出频繁变化的那些部分做出抽象,但要拒绝不成熟的抽象。 阅读全文
posted @ 2012-12-28 10:33 践道者 阅读(240) 评论(0) 推荐(0)
摘要:单一职责:就一个类而言,应该仅有一个引起它变化的原因。软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离,如果你能想到多于一个的动机去改变这个类,那么这个类就具有多于一个的职责,就应该考虑职责的分离。 阅读全文
posted @ 2012-12-28 09:31 践道者 阅读(170) 评论(0) 推荐(0)
摘要:1 #关联关系(association) 2 3 class Climaate(object): 4 pass 5 6 7 class Penguin(Bird): 8 def __init__(self): 9 super(Penguin, self).__init__()10 self._climate = NoneAssociation关联关系表现为变量(has a )。类与类之间的联接,它使一个类知道另一个类的属性和方法。例如如果A依赖于B,则B体现为A的全局变量。关联关系有双向关联和单向关联。双向关联:两个类都知道另一个类的公共... 阅读全文
posted @ 2012-12-27 18:57 践道者 阅读(271) 评论(0) 推荐(0)
摘要:1 #依赖关系(dependency) 2 class Oxyggen(object): 3 pass 4 5 class Water(object): 6 pass 7 8 9 class Animal(object):10 def metabolism(self, oxygen, water):11 passDependency(依赖关系)表现为函数中的参数(use a)。是类与类之间的连接,表示一个类依赖于另一个类的定义,其中一个类的变化将影响另外一个类。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。 阅读全文
posted @ 2012-12-27 18:02 践道者 阅读(414) 评论(0) 推荐(0)
摘要:#组合关系(composition)class Wing(object): passclass Bird(object): def __init__(self): self.wing = Wing()Composition(组合关系)是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。Bird的生命周期决定了self.wing的生命周期 阅读全文
posted @ 2012-12-27 17:44 践道者 阅读(350) 评论(0) 推荐(0)
摘要:抽象类(abstract class):声明方法的存在而不去实现 阅读全文
posted @ 2012-12-27 14:10 践道者 阅读(156) 评论(0) 推荐(0)
摘要:#coding=utf8import stringdef count(numA, numB, operator): try: numberA = string.atof(numA) numberB = string.atof(numB) except: exit("input error,please check it number A :'%s' -- number B:'%s'" % (numA, numB)) op = OperationFactory.createOperate(operator) op.setA(nu... 阅读全文
posted @ 2012-12-27 11:35 践道者 阅读(2857) 评论(0) 推荐(0)
摘要:考虑这种情况:如果一个线程遇到锁嵌套的情况该怎么办,这个嵌套是指当我一个线程在获取临界资源时,又需要再次获取。 根据这种情况,代码如下:Python代码'''''Createdon2012-9-8@author:walfred@module:thread.ThreadTest6'''importthreadingimporttimecounter=0mutex=threading.Lock()classMyThread(threading.Thread):def__init__(self):threading.Thread.__i 阅读全文
posted @ 2012-12-25 14:32 践道者 阅读(2478) 评论(0) 推荐(0)
摘要:1、当需要排序的时候,尽量设法使用内建python列表的sort方法2、当需要搜索的时候,尽量设法使用内建的字典DSU模式:通过创建一个辅助列表,将问题转化为列表的排序,从而可以利用默认的快速的sort方法。特性:序列是按照条目的顺序进行比较的。条目顺序是对列表和元组的字符串比较(即字母顺序)规划的归纳。 阅读全文
posted @ 2012-12-20 16:52 践道者 阅读(199) 评论(0) 推荐(0)
摘要:decode:将其他编码转换成unicode a = 'aabcde'.decode('gb2312') print type(a) b = 'bbddee'.decode('utf8') print type(b) 打印结果:<type 'unicode'><type 'unicode'>encode:将unicode编码转换成其他编码 阅读全文
posted @ 2012-12-13 16:14 践道者 阅读(1752) 评论(0) 推荐(0)
摘要:做文本处理的时候经常要判断一个文本有没有以一个子串开始,或者结束。Python为此提供了两个函数:S.startswith(prefix[, start[, end]]) -> bool如果字符串S以prefix开始,返回True,否则返回False。start和end是两个可以缺省的参数。分别是开始比较的位置和结束比较的位置。这个函数也可以写成S[start:end].startswith(prefix)。S.endswith(suffix[, start[, end]]) -> bool如果字符串S以suffix结束,返回True,否者返回False。与startswith类似 阅读全文
posted @ 2012-12-11 11:49 践道者 阅读(3495) 评论(0) 推荐(0)
摘要:Python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力! filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回: >>> def f(x): return x % 2 != 0 and x % 3 != 0 >>> filter(f, range(2, 25)) [5, 7, 11, 13, 17, 19, 23] >>> def f(x) 阅读全文
posted @ 2012-12-08 13:45 践道者 阅读(307) 评论(0) 推荐(0)
摘要:import urllibinforMation = urllib.urlopen("http://tianya.cn", proxies={'http':'127.0.0.1:8087'})print inforMation.read() 阅读全文
posted @ 2012-12-07 10:37 践道者 阅读(1369) 评论(0) 推荐(0)
摘要:在工作过程中,在使用全局变量时遇到了些问题,有两个文件,一个是tt.py,代码如下,1 #coding=utf82 3 SUM_COST = 04 5 def cons():6 global SUM_COST #如果要修改全局变量一定要加gloal声明,单纯的读取则不用7 SUM_COST += 18 print SUM_COST另一个是cc.py,代码如下,#coding=utf8from tt import SUM_COST, consprint SUM_COSTcons()print SUM_COST个人理解cc里输出应该分别是0,1但发现输出的都是0,发现调用c... 阅读全文
posted @ 2012-12-06 10:37 践道者 阅读(1116) 评论(0) 推荐(0)
摘要:class TestClassMethod(object): METHOD = 'method hoho' def __init__(self): self.name = 'leon' def test1(self): print 'test1' print self @classmethod def test2(cls): print cls print 'test2' print TestClassMethod.METHOD print '------------... 阅读全文
posted @ 2012-12-04 22:27 践道者 阅读(51132) 评论(0) 推荐(0)