On 4/1/2010 6:34 PM, kj wrote:


When coding C I have often found static local variables useful for
doing once-only run-time initializations.  For example:

int foo(int x, int y, int z) {

   static int first_time = TRUE;
   static Mongo *mongo;
   if (first_time) {
     mongo = heavy_lifting_at_runtime();
     first_time = FALSE;
   }

   return frobnicate(mongo, x, y, z);

Global var or class or closure such as below (obviously untested ;=):

make_foo()
  mongo = heavy_lifting_at_runtime();
  def _(x,y,z):
        return frobnicate(mongo, x, y, z)
  return _
foo = make_foo
del make_foo # to make sure it is *never* called again ;

Now you only have foo with a hard-to-access private object and no first_time checks when you call it.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to