python三层装饰器,python2装饰器

  python三层装饰器,python2装饰器

  定义跟踪(函数) :

  EFwrapper(*Args,**kwargs)):

  result=func(*Args,* * kwargs))))))))result=func(* Args,* * kwargs)))))result)(结果)(结果)(结果)(结果)(结果)(结果)(结果)(结果)

  打印(“%s(%r,%r )-%r))函数__name_,args,kwargs,result))

  返回结果

  返回包装

  @tracer

  defFibonacci(n):

  如果nin (0,1):

  返回

  return(Fibonacci(n-1)Fibonacci(n-2))

  斐波那契(3).

  是打印(斐波那契)

  打印(帮助:).

  是帮助(斐波那契)

  从执行结果中,最后一个函数对象变为包装,而不是斐波那契函数对象。

  由于斐波那契函数位于装饰器中,因此包装材料对象被分配给斐波那契函数对象,即fibnacchi=wrapper。

  使用functools.wraps:

  这意味着原始函数的属性无效

  如果希望保留原始函数的属性,可以使用functools.wraps

  从函数工具导入包装

  定义跟踪(函数) :

  @wraps(func)

  EFwrapper(*Args,**kwargs)):

  result=func(*Args,* * kwargs))))))))result=func(* Args,* * kwargs)))))result)(结果)(结果)(结果)(结果)(结果)(结果)(结果)(结果)

  打印(“%s(%r,%r )-%r))函数__name_,args,kwargs,result))

  返回结果

  返回包装

  @tracer

  defFibonacci(n):

  如果nin (0,1):

  返回

  return(Fibonacci(n-1)Fibonacci(n-2))

  斐波那契(3).

  是打印(斐波那契)

  打印(帮助:).

  是帮助(斐波那契)

  执行functools.wraps后,将函数重新分配给原始函数包装=斐波那契。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: