> > private_hash = dict( A=42, B=69 ) > def public_fn(param): > return private_hash[param] > print public_fn("A") # good: prints 42 > x = private_hash["A"] # works: oops, hash is in scope > > I'm not happy with that because I'd like to limit the scope of the > private_hash variable so that it is known only inside public_fn. >
A common idiom to do that would be this: def public_fn(param, __private_hash=dict(A=42, B=69)): return __private_hash[param] People often squint when they see that but it is useful in several ways. Python initializes the default arguments -once-, at definition. If they are mutable-- a dictionary, list or such-- that same dict is used everytime the function is called. HTH, --S
-- http://mail.python.org/mailman/listinfo/python-list