code: def result_invoke(action):
  	r
  	def wrap(func):
  		@functools.wraps(func)
  		def wrapper(*args, **kwargs):
  			result = func(*args, **kwargs)
  			action(result)
  			return result
  		return wrapper
  	return wrap
docs: r"""
  	Decorate a function with an action function that is
  	invoked on the results returned from the decorated
  	function (for its side-effect), then return the original
  	result.
  
  	>>> @result_invoke(print)
  	... def add_two(a, b):
  	...     return a + b
  	>>> x = add_two(2, 3)
  	5