Other articles


  1. Context manager in Python

    上下文管理器(context manager)是Python2.5开始支持的一种语法,用于处理指 定代码块进入和退出时的操作。一般使用with语法,也可以直接调用相应的方法。

    with语句
    with语句是用来简化“try/finally”语句的,通常用于处理共享资源的获取和 释放,比如文件、数据库和线程资源。它的用法如下:

    with VAR = EXPR:
        BLOCK
    

    其相当于进行了如下操作:

    VAR = EXPR
    VAR.__enter__()
    try:
        BLOCK
    finally:
        VAR.__exit__()
    

    例子如下:

    import time
    class demo:
        def __init__(self,label):
            self.label = label
    
        def __enter__(self):
            self.start ...
    read more
  2. Decroator in Python

    装饰器的作用是在原有对象的基础上添加额外功能。python中可以将函数作为参 数,进行装饰,返回经过修饰过的函数,比如:

    def decorator(fn):
        def wrapper():
            print "*** wrapper ***"
            fn()
            print "*** wrapper ***"
        return wrapper
    
    def origin_fn():
        print "--- origin ---"
    
    decorated_fn = decorator(origin_fn)
    
    decorated_fn()
    

    python可以使用语法糖@来达到相同的作用,例子如下:

    def makebold(fn):
        def wrapper():
            return "<b>" + fn() + "</b>"
        return wrapper
    
    def makeitalic(fn):
        def wrapper():
            return "<i>" + fn() + "</i>"
        return ...
    read more
  3. Generator in Python

    生成器是可以当作iterator使用的特殊函数。它有以下优点:
    1. 惰性求值;
    2. 在处理大的列表时不需要一次性加载全部数据,可以减小内存使用;
    除非特殊的原因,应该在代码中使用生成器。

    生成器(generator) vs 函数(function)
    生成器和函数的主要区别在于函数return a value, 生成器yield a value同时 记录以便在下次调用时从上次的状态下恢复执行。

    生成器(generator) vs 迭代器(iterator)
    * 迭代器是一个更一般的概念,它是一个有next方法和返回self的__iter__方 法的类。
    * 每个生成器是一个迭代器,但迭代器不一定是生成器,生成器是有记录上次 执行状态的迭代器。从这点上看生成器有点像闭包,只是它记录的不是数据 的状态,记录的是执行过程中的状态。

    生成器(generator) vs 续延(coninuations) 与生成器相比,续延更加灵活,续延允许你调用不同状态的执行过程,而不像生 成器这样直接返回。

    创建生成器
    在python可以使用以下方式创建生成器:
    1 ...

    read more

blogroll

social