Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #86255

Re: list storing variables

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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