On Sun, 07 Dec 2008 08:54:46 +0000, mh wrote: > How can I make a "var" parm, where the called function can modify the > value of the parameter in the caller?
By using another language. > def f(x): > x = x + 1 > > n = 1 > f(n) > # n should now be 2 Python doesn't work like that. You should read this: http://effbot.org/zone/python-objects.htm Some work arounds, in order from worst-to-best: (1) Use a hard-coded global name: x = 1 def f(): global x x = x + 1 f() assert x == 2 (2) Wrap the value you want to change in a list, then modify the list in place. n = [1] def f(alist): alist[0] = alist[0] + 1 f(n) assert n[0] == 2 (4) Just use an ordinary function. Functions can return multiple values. n = 1 def f(x): return (x+1, 99) n, y = f(n) assert y == 99 assert n == 2 (5) Find another way to solve your problem. Why do you think you need var parameters? What problem are you hoping to solve by using them? As a former Pascal programmer, I missed var parameters at first, but now I don't. -- Steven -- http://mail.python.org/mailman/listinfo/python-list