网络编程
位置:首页>> 网络编程>> Python编程>> Python装饰器的应用场景及实例用法

Python装饰器的应用场景及实例用法

作者:小妮浅浅  发布时间:2022-06-24 16:09:03 

标签:Python,装饰器,应用场景

1、说明

装饰本质上是一个Python函数,它能使其他函数在没有任何代码变化的情况下增加额外的功能。有了装饰,我们可以抽出大量与函数功能无关的相同代码,继续重用。

2、应用场景

包括插入日志、性能测试、事务处理、缓存和权限验证。

3、实例


# 装饰器
# func指函数
def decorator(func):
   def wrapper(*args, **kwargs):
       # 执行函数内部逻辑 打印时间
       print(time.time(), args, kwargs)
       # 执行调用函数中逻辑 打印不同参数
       func(*args, **kwargs)
   return wrapper
# 一个参数
@decorator
def function(param):
   print('function : this is decorator ' + param)
# 两个参数
@decorator
def function1(param1, param2):
   print('function1 : this is decorator ' + param1)
   print('function1 : this is decorator ' + param2)
# 三个参数(可变参数)
@decorator
def function2(param1, param2, **kwargs):
   print('function2 : this is decorator ' + param1)
   print('function2 : this is decorator ' + param2)
   print(kwargs)
function('param')
function1('param1' , 'param2')
function2('param1' , 'param2', x=1,y=2,z=3)

内容扩展:

函数注册表

简单注册表


funcs = []
def register(func):
 funcs.append(func)
 return func    
@register
def a():
 return 3

@register
def b():
 return 5  
# 访问结果
result = [func() for func in funcs]

注册表隔离(使用类的不同实例)


class Registry(object):
 def __init__(self):
   self._funcs = []

def register(self, func):
   self._funcs.append(func)

def run_all(self):
   return [func() for func in self._funcs]
r1 = Registry()
r2 = Registry()

@r1.register
def a():
 return 3

@r2.register
def b():
 return 5

@r1.register
@r2.register

来源:https://www.py.cn/jishu/jichu/29571.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com