How safe is modifying locals()?

Ian Bicking ianb at colorstudy.com
Fri Jul 25 18:55:32 EDT 2003


On Fri, 2003-07-25 at 12:28, Paul Paterson wrote:
> Thanks Terry! I adjusted my tests and now see this behaviour exactly. 
> The function itself works but the changes do not propogate out to the 
> calling scope. So this approach of using locals() appears to be dead.
> 
> Are there any other approaches?

Think about what you are trying to do, and try to identify a (mutable)
object that can encapsulate that.  Then pass the object, and modify its
instance variables, like:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

def change(p):
    p.y = 10

obj = Point(0, 0)
change(obj)
assert obj.y == 10


Maybe this mutable object will simply be the main application object,
and instead of functions you will use methods of that application
object.

  Ian







More information about the Python-list mailing list