robot源码解读9【不常见装饰器汇总】【待补充】

  1. 常规装饰器
# 1. 不带参数
def wrapper(func):  # 装饰器函数,func为被装饰函数
    def inner(*args, **kwargs):
        """被装饰函数前需要添加的内容"""
        ret = func(*args, **kwargs)  # 被装饰函数
        """被装饰函数后需要添加的内容"""
        return ret

    return inner


# 2. 带参数装饰器
def out_wrapper(flag):     
         def wrapper(func): #装饰器函数,func为被装饰函数   
                def inner(*args,**kwargs):        
                        """被装饰函数前需要添加的内容"""                 
                        ret=func(*args,**kwargs) #被装饰函数        
                        """被装饰函数后需要添加的内容"""        
                        return ret   
                return inner
        return wrapper
  1. 【带参数】,【非两层装饰器】
# 位置 robot\libraries\BuiltIn.py

def run_keyword_variant(resolve):
    def decorator(method):
        RUN_KW_REGISTER.register_run_keyword('BuiltIn', method.__name__,
                                             resolve, deprecation_warning=False)
        return method
    return decorator


@run_keyword_variant(resolve=0)
def set_suite_variable(self, name, *values):


# 理解简化版本
def wrapper(wrapper_arg):
    def inner(inner_arg):
        print('before inner')
        print('wrapper_arg: ',wrapper_arg)
        print('inner_arg: ',inner_arg)
        return inner_arg  

    return inner

# 1
# @wrapper   # wrapper_arg:  <function atest_fun at 0x000002CB991694C8>
# def atest_fun(test_name):
#     print('in atest_fun agr: ',test_name)  # 没有执行
#
# atest_fun('name1')


# 2
@wrapper(123)  # wrapper_arg:  123
def atest_fun(test_name):
    print('in atest_fun agr: ',test_name)   # 执行了

atest_fun('name1')
posted @ 2021-10-25 15:39  该显示昵称已被使用了  阅读(51)  评论(0)    收藏  举报