I will try to be pretty general here, as this is probably an example of a toy, and you might need something parameterized:
from collections import MutableMapping def map_set(k, v): def wrapper(func): def wrapped(*args, **kwds): result = func(*args, **kwds) if isinstance(result, MutableMapping): result[k] = v return result return wrapped return wrapper @map_set('c', 3) def foo(r=None): if r is None: return {'a':1, 'b':2} else: return r >>> foo() {'a': 1, 'c': 3, 'b': 2} >>> foo('bar') 'bar'
source share