• 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. 【带参数】,【非两层装饰器】
    # 位置 robotlibrariesBuiltIn.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')
    
  • 相关阅读:
    iOS 静态、全局变量、常量
    原子性atomic/nonatomic
    iOS数组遍历
    iOS开发过程中易犯的小错误
    mac开启Airdrop的硬件要求
    Activity Monitor 闪退 & 无法进入睡眠
    在Linux中连接android设备
    网格布局(GridLayout) 行数与列数
    $符号报not defing 报错
    eclipse鼠标变成十字符号
  • 原文地址:https://www.cnblogs.com/amize/p/15458864.html
Copyright © 2020-2023  润新知