On Wednesday, 15 February 2017 22:33:42 GMT Chris Angelico wrote:
> On Wed, Feb 15, 2017 at 10:18 PM, Steven D'Aprano <st...@pearwood.info> 
wrote:
> > Python doesn't have thunks, but there is a relatively heavyweight
> > solution for delayed evaluation: wrap the code in a function.
> > 
> > debugLog( ‘info is %r’, lambda: expensiveFunction() )
> > 
> > 
> > and then adjust debugLog so that if the argument is a function, it will
> > call the function only when needed:
> > 
> > def debugLog(message, value):
> >     if debug_log_enabled:
> >         if isinstance(value, types.FunctionType):
> >             value = value()
> >         
> >         log(message % value)
> 
> Or use the function as the __repr__ of some object, which comes to the
> same thing without requiring special code inside debugLog.

__repr__ is interesting however.

Typically I describe in a string why the value is being logged. That means
that the object is always a string. I cannot recall using debugLog( obj )
in production.

dlog('This is the state of obj at the start of event processing: %r' % (obj,))

Barry

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to