[Python-ideas] 'Injecting' objects as function-local constants

Terry Reedy tjreedy at udel.edu
Mon Jun 13 21:57:31 CEST 2011

On 6/13/2011 10:33 AM, Steven D'Aprano wrote:

> def hook(*args):
> pass
> def do_work(args):
> hook("doing spam")
> spam()
> hook("doing ham")
> ham()

Given the expense of function calls, I would write the above as

hook = None

def do(args):
   if hook: hook("doing spam")

if __name__ == '__main__':
     if '--verbose' in sys.argv:
         wrap = inject(hook=print)

I do not see the point of all this complication. If you are not trying 
to optimize the function (and adding such hooks is obviously not),
         hook = print
works just fine (in 3.x ;-).

Terry Jan Reedy

More information about the Python-ideas mailing list