python-闭包和装饰器

https://www.zhihu.com/question/25950466/answer/31731502

import time

def addspam(timeout=-1):

    def _addspam(fn):
        sp = ['*', '#', '%']

        def __addspam(*args):
            print fn.__name__
            i = 0
            st = time.time()
            while True:
                if time.time() - st >= timeout:
                    if i >= len(sp):
                        i = 0
                    print sp[i] * 5
                    i += 1
                    st = time.time()
            return fn(*args)
        return __addspam
    return _addspam

@addspam(timeout=2)
def useful(a, b):
    print a**2 + b ** 2

if __name__ == "__main__":
    useful(2, 3)

代码可视化: http://pythontutor.com/

利用装饰器的一个git项目:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、python函数作用域LEGB python解释器查找变量的原则(顺序):L→E→G→BL:Local函数内部...
    风萧雨霖阅读 562评论 0 0
  • 闭包: 在函数内部在定义一个函数,并且这个函数用到了外面函数的变量,这个函数和用到的变量,称为闭包. deftes...
    界面大叔阅读 265评论 0 0
  • 下午放学,像往日一样,姥姥正准备着吃的,不过今天姥姥也新潮了一次,竟然做了“披萨”,太惊喜了!你赶忙加入其中...
    郑彩云_aa1b阅读 362评论 0 0
  • 前 言 很多人都认为做设计很吃香, 设计是个很赚钱的行业, 设计师只要会P图, 会画图就能“应付”客户, ▼ 可是...
    黑设汇阅读 826评论 0 1
  • 作者/任争气 你在追求诗和远方 他们在背井离乡 隆重的归来 扎心的离别 一年一次的迁徙 让“留守”一词成为多少人心...
    醉美长安阅读 1,092评论 15 65

友情链接更多精彩内容