请稍侯

Python弱引用

>>> import weakref >>> import sys >>> class Test(): def printT(): print ('this is Test printT') >>> t = Test() >>> sys.getrefcount(t) 2 >>> d = t >>> sys.getrefcount(t) 3 >>> del d >>> sys.getrefcount(t) 2 >...

read more

Python-memoize

代码记忆是一种避免潜在的重复计算开销的方法。你通过缓存一个函数每次运行的结果来达到此目的。 这样,下一次函数以同样的参数运行时,它将从缓存中返回结果,并不需要花费额外的时间来计算结果。 一个简单的例子 factorial_memo = {} def factorial(k): if k < 2: return 1 if not k in factorial_memo: factorial_memo[k] = k * factorial(k-1) return factorial_memo[k] 通过factorial_memo这个di...

read more

Python协程

###使用生成器作为协程支持,可以实现简单的事件调度模型: from time import sleep # Event Manager event_listeners = {} def fire_event(name): event_listeners[name]() def use_event(func): def call(*args, **kwargs): generator = func(*args, **kwargs) # 执行到挂起 event_name = next(generator) ...

read more

Python logging

Python日志记录logigng模块 简单使用,代码如下: # 导入日志模块 import logging # 初始化一个logger logger = logging.getLogger(__name__) # 设置日志级别 logger.setLevel(logging.DEBUG) # 初始化一个Handler fh = logging.StreamHandler() # 准备格式串 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 把格式化串加入设...

read more

Python尾递归

###一个递归函数 def fact(n): if n==1: return 1 return n * fact(n - 1) 执行fact(1000),出现以下错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 4, in fact ... File "<stdin>", line 4, in fact RuntimeError: maximum...

read more

遍历HashSet和HashMap

遍历HashSet Set<String> set = new HashSet<String>(); set.add("123"); set.add("abc"); // 方法一:使用迭代器 for(Iterator<String> i = set.iterator(); i.hasNext(); ) { System.out.println(i.next()); } // 方法二:使用 JDK 5 新增的 foreach 循环,只有数组和实现了 Iterable 接口的类才能这样写。 // 冒号左边是一个局部变量,表示这个 set 中被...

read more

Python协程入门(greenlet)

一个例子 from greenlet import greenlet def test1(name): print name gr2.switch() print "over" def test2(): print "test-2" return "test2-fjsfjs" gr1 = greenlet(test1) gr2 = greenlet(test2) value = gr1.switch("fjsfjs") print gr1.parent print gr2.parent print greenlet.getcur...

read more

Python中super()解析

super super(type[, object-or-type]) 返回一个代理类来执行父类或者兄弟类的方法. 如果参数object-or-type省略,返回的对象不会绑定,如果object-or-type是一个对象,那么函数isinstance(obj, type) 必须为TRUE,如果object-or-type,那么issubclass(type2, type)必须为TRUE class A(object): # 只能是new-style class def __init__(self): print "enter A" p...

read more

__init__和__new__

__init__方法 __init__(self, […)此方法为类的初始化方法。当构造函数被调用的时候的任何参数都将会传给它。(比如如果我们调用 x = SomeClass(10, ‘foo’)),那么 __init__ 将会得到两个参数10和foo。 __init__ 在Python的类定义中被广泛用到。 注意:参数self是类的实例,已经创建完成,通过__init__添加改变属性等。 下面的例子中__init__没有执行,因为float类型的__init__忽略了参数就返回了,float是不可变的类型,所以这时候可以使用__new__ >>> class i...

read more

使用collections.defaultdict

defaultdict Examples collections.defaultdict是dict的一个子类,定义是 class collections.defaultdict([default_factory[, ...]]) 至少提供一个参数,这个参数会初始化给dict的default_factory属性,这个属性在dict中默认为None,如果这个返回的值为空的话会导致的引发KeyError异常. >>> d = dict() >>> print d['x'] Traceback (most recent call last): ...

read more