def dec1(name=None, tags=[]): print("in dec1:", locals()) tags.append(["name:subsystem"]) tags = { 'tags': tags, 'name': name } def decorator(func): print ("inside dec1.decorator:", locals()) name = tags["name"] # tags = tags["tags"] def decorated(*args,**kwargs): return func(*args,**kwargs) return decorated return decorator def dec2(name=None, tags=[]): print("in dec2:", locals()) tags.append(["name:subsystem"]) tags = { 'tags': tags, 'name': name } def decorator(func): print ("inside dec2.decorator:", locals()) name = tags["name"] tags = tags["tags"] def decorated(*args,**kwargs): return func(*args,**kwargs) return decorated return decorator print ("Trying dec1:") @dec1(name="foo", tags=["foo:1"]) def f1(): print ("f1()") print ("") print ("Trying dec2:") @dec2(name="foo", tags=["foo:1"]) def f2(): print ("f2()")