On Tue, 26 Mar 2013 07:33:18 -0700, Michael Herrmann wrote: >> As long as you know the program is going to be simple, pile on the >> globals. But as soon as it advances, each of them is a trap to fall >> into. > > You're right with everything you say. globals are bad and it may happen > that this will bite me.
Global *variables* are bad, not global functions. You have one global variable, "the current window". So long as your API makes it obvious when the current window changes, implicitly operating on the current window is no more dangerous than Python's implicit operations on the current namespace (e.g. "x = 2" binds 2 to x in the current namespace). I recommend you look at the random.py API. You have a Random class, that allows the user to generate as many independent random number generators as needed. And the module also initialises a private instance, and exposes the methods of that instance as top-level functions, to cover the 90% simple case where your application only cares about a single RNG. -- Steven -- http://mail.python.org/mailman/listinfo/python-list