Peter Otten <__pete...@web.de>: > The OP explicitly mentions the & operator. There's no python analog to > that and the behavior shown below: > > $ cat pointers.c > #include <stdio.h> > > int main() > { > int a = 2, b = 5; > int * Li[2] = { &a, &b }; > printf("%d %d\n", *Li[0], *Li[1]); > a = 3; > printf("%d %d\n", *Li[0], *Li[1]); > return 0; > } > $ gcc pointers.c > $ ./a.out > 2 5 > 3 5
But there is! I just demonstrated it in a previous posting: > In Python, you can accomplish "&" by creating an object: > > >>> a = 3 > >>> b = 4 > >>> class AmpersandA: > ... def get(self): return a > ... def set(self, value): global a; a = value > ... > >>> class AmpersandB: > ... def get(self): return b > ... def set(self, value): global b; b = value > ... > >>> l = [ AmpersandA(), AmpersandB() ] > >>> for m in l: > ... m.set(7) > ... > >>> print(a) > 7 > >>> print(b) > 7 > >>> > > It's exactly like "&" in C escept it's a slight bit more verbose and the > exact implementation is dependent on the name of the variable. You can find an analogous ampersand object for any C lvalue. What I'm saying is that there's nothing special about Python's object model or variables. Guido could decide tomorrow to add a C-esque "&" operator to Python without breaking a single existing Python program. The Python compiler would simply generate code like above. Marko -- https://mail.python.org/mailman/listinfo/python-list