python -装饰器

装饰器之前要先说说函数名()和函数名的区别

def test():
  print(2)
  return 2

test()是返回函数值,所以是可以赋值给变量的。比如a=test()。
test是调用函数,在scrapy里有很多的callback=self.parse
,就是调用具体函数。
装饰器是由里外两层函数,一般里面的函数是主函数,比如网页里各个网页,外层函数是里层函数执行前后要执行的函数,比如看网页之前要看你登陆没有这种。
通用格式是:

def outer_func(func):
  def inner_func(*args, **kwargs):
    #dosomething before the actual func
    result = actual_func(*args, **kwargs)
    #dosomething with resule before the actual func
    return result
  return inner_fun

调用是这样的

@outer_func
def actual_func(*args, **kwargs):
  #blalala...

actual_func()

如果要传参给外层函数则是这样的:

def outer_func(decorator_args):
  def args_func(func):
    def inner_func(*args, **kwargs):
      #dosomething before the actual func
      result = actual_func(*args, **kwargs)
      #dosomething with resule before the actual func
      return result
    return inner_func
  return args_func

@outer_func(decorator_args)
def actual_func(*args, **kwargs):
  #blalala...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容