我是装饰器的新手,并试图编写一个允许我获取命名参数(如果存在)的,否则是异常或其他东西。
解释:
# my decorator!
def test_mem(key, modifier):
def deco(func):
@wraps(func)
def wrapper(*args, **kwargs):
# something here, s.t.
# print(args + modifier) <------
return func(*args, **kwargs)
return wrapper
return deco
我的功能
@test_mem('username', modifier = '_allowed')
def myfunc(arg1, username = None, stuff = None):
# logic, this code is always run!
return 'Done'
myfunc(1, 3)
>>>> '3_allowed'
myfunc(1, username = 3)
>>>> '3_allowed'
myfunc(1, stuff = [])
>>>> Exception
当我编码时,我的示例 1 和示例 2 是互斥的,当示例 1 工作时,示例 2 中断,反之亦然。我正在尝试使用它来创建一些自动键。