- 常规装饰器
# 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
- 【带参数】,【非两层装饰器】
# 位置 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')