为什么在Python代码中装饰器很关键

要理解什么是装饰器,您首先需要熟悉Python处理函数的方式。从它的观点来看,函数和对象没有什么不同。它们有属性,可以重新分配:


  1. def func():  
  2.   print('hello from func')  
  3. func()  
  4. > hello from func  
  5. new_func = func  
  6. new_func()  
  7. > hello from func  
  8. print(new_func.__name__)  
  9. > func 

此外,你还可以将它们作为参数传递给其他函数:


  1. def func():  
  2.   print('hello from func')  
  3. def call_func_twice(callback):  
  4.   callback()  
  5.   callback()  
  6. call_func_twice(func)  
  7. > hello from func  
  8. > hello from func 

现在,我们介绍装饰器。装饰器(decorator)用于修改函数或类的行为。实现这一点的方法是定义一个返回另一个函数的函数(装饰器)。这听起来很复杂,但是通过这个例子你会理解所有的东西:


  1. def logging_decorator(func): 
  2.   def logging_wrapper(*args, **kwargs): 
  3.     print(f'Before {func.__name__}'
  4.     func(*args, **kwargs) 
  5.     print(f'After {func.__name__}'
  6.   return logging_wrapper 
  7.      
  8. @logging_decorator 
  9. def sum(x, y): 
  10.   print(x + y) 
  11.    
  12. sum(2, 5) 
  13. > Before sum 
  14. > 7 
  15. After sum 

让我们一步一步来:

【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章