zoukankan      html  css  js  c++  java
  • 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')
    
  • 相关阅读:
    (译)linux系统关于命令echo的15个例子
    linux之grep实例讲解
    linux grep练习
    (译)"usermod"命令使用完全指导---15个练习例程截图
    linux分区,文件系统,目录结构概述
    Linux 配置YUM
    Linux 强制安装rpm 包
    $LANG、$NLS_LANG 记录一下
    Oracle性能诊断艺术-相关脚本说明
    datafile相关(add、rename、drop)
  • 原文地址:https://www.cnblogs.com/amize/p/15458864.html
Copyright © 2011-2022 走看看