Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #86255
| From | Marko Rauhamaa <marko@pacujo.net> |
|---|---|
| Newsgroups | comp.lang.python |
| Subject | Re: list storing variables |
| Date | 2015-02-23 21:06 +0200 |
| Organization | A noiseless patient Spider |
| Message-ID | <87385wh2ho.fsf@elektro.pacujo.net> (permalink) |
| References | <54eb2357$0$3011$426a74cc@news.free.fr> <cl16ncF4a8mU1@mid.individual.net> <8761ascwt4.fsf@elektro.pacujo.net> <mailman.19094.1424716896.18130.python-list@python.org> |
Peter Otten <__peter__@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
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
list storing variables "ast" <nomail@invalid.com> - 2015-02-23 13:55 +0100
Re: list storing variables Dave Angel <davea@davea.name> - 2015-02-23 08:24 -0500
Re: list storing variables Marko Rauhamaa <marko@pacujo.net> - 2015-02-23 15:49 +0200
Re: list storing variables Peter Pearson <pkpearson@nowhere.invalid> - 2015-02-23 17:35 +0000
Re: list storing variables Marko Rauhamaa <marko@pacujo.net> - 2015-02-23 20:22 +0200
Re: list storing variables Peter Otten <__peter__@web.de> - 2015-02-23 19:41 +0100
Re: list storing variables Marko Rauhamaa <marko@pacujo.net> - 2015-02-23 21:06 +0200
Re: list storing variables Chris Angelico <rosuav@gmail.com> - 2015-02-24 06:17 +1100
Re: list storing variables Marko Rauhamaa <marko@pacujo.net> - 2015-02-23 22:25 +0200
Re: list storing variables Ian Kelly <ian.g.kelly@gmail.com> - 2015-02-23 12:29 -0700
Re: list storing variables Marko Rauhamaa <marko@pacujo.net> - 2015-02-23 22:38 +0200
Re: list storing variables Ben Finney <ben+python@benfinney.id.au> - 2015-02-24 09:03 +1100
Re: list storing variables Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-02-24 13:24 +1100
Re: list storing variables Marko Rauhamaa <marko@pacujo.net> - 2015-02-24 10:18 +0200
csiph-web