Ron_Adam <[EMAIL PROTECTED]> wrote in message news:<[EMAIL PROTECTED]>... > Is there a way to hide global names from a function or class? > > I want to be sure that a function doesn't use any global variables by > mistake. So hiding them would force a name error in the case that I > omit an initialization step. This might be a good way to quickly > catch some hard to find, but easy to fix, errors in large code blocks.
def noglobals(f): . import new . return new.function( . f.func_code, . {'__builtins__':__builtins__}, . f.func_name, . f.func_defaults, . f.func_closure . ) You can use it with the Python 2.4 @decorator syntax: @noglobals def a(...): . # code here Doing this for a class is a little more work. You will need dig inside to perform this treatment on each method separately and handle new and old-style classes a bit differently. Note that this kind of function may declare globals. They will be persistent but private to the function. Oren -- http://mail.python.org/mailman/listinfo/python-list