Python语法糖(decorator)

类似作用

#-*- coding: UTF-8 -*- 
def foo():
 print('do something~')
def timeit(func):
 def wrapper():
 start=time.clock()
 func()
 end=time.clock()
 print('used :',end-start)
 return wrapper
foo=timeit(foo)
foo()

装饰器用法

import time
def timeit(func):
 def wrapper():
 start = time.clock()
 func()
 end =time.clock()
 print 'used:', end - start
 return wrapper
@timeit
def foo(): 
 print ('in foo()')
foo()

带参数的装饰器

def decomaker(arg): 
  '通常对arg会有一定的要求' 
   """由于有参数的decorator函数在调用时只会使用应用时的参数 
       而不接收被装饰的函数做为参数,所以必须在其内部再创建 
       一个函数 
   """ 
  def newDeco(func):    #定义一个新的decorator函数 
        print func, arg 
        return func 
    return newDeco 
@decomaker(deco_args)
def foo():
 pass 
foo()

同步锁的例子

注意几个参数的顺序

def synchronized(lock): 
    """锁同步装饰方法
 lock必须实现了acquire和release方法
    """ 
 def sync_with_lock(func): 
 def new_func(*args, **kwargs): 
 lock.acquire() 
 try: 
 return func(*args, **kwargs) 
 finally: 
 lock.release() 
 new_func.func_name = func.func_name 
 new_func.__doc__ = func.__doc__ 
 return new_func 
 return sync_with_lock 
 
@synchronized(__locker) 
def update(data): 
"""更新计划任务""" 
 do something
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 导语: 2015年9月9日,科学家们投票表决将由哪个期刊来登载发现引力波的文章。五天之后,他们就发现了引力波。 撰...
    知识分子阅读 5,192评论 0 1
  • 我累了,自从认识某男后,发生很多事……我一直很浪漫,以为爱可以战胜一切,现在才发现,并不是如此,我到底该越来越明白...
    love立阅读 1,306评论 0 1
  • 秋风吹落斜阳,染红了山林,又染红了大地,我想陪你走一走这粘稠的秋色,却隔着一座城的距离;我想将思念藏入这如火的秋色...
    的确良阅读 3,975评论 0 0
  • #幸福是需要修出来的~每天进步1%~幸福实修09班~08-黄瑛 201708/1802/30)09班 【幸福三朵玫...
    涵蛋蛋阅读 1,418评论 1 0
  • 咱们讲过了简历首页、自荐信如何填写,今天咱们说一说怎样在简历中和面试中如何突出自己的优势,无论你是大学生求职、跳槽...
    瘦壮的胖子阅读 5,631评论 3 0

友情链接更多精彩内容