On Tue, Apr 19, 2011 at 3:32 PM, <bod...@googlemail.com> wrote:

> And presumably cleans up the leftover object with the value of 42 when it
> changes to point at the 43 object?
>
> Or does it leave all changes in memory until the program exits?
>
> Bodsda.
> Sorry for top posting, my phone won't let me change it
> Sent from my BlackBerry® wireless device
>
> -----Original Message-----
> From: Steven D'Aprano <st...@pearwood.info>
> Sender: tutor-bounces+bodsda=ubuntu....@python.org
> Date: Wed, 20 Apr 2011 04:24:03
> To: tutor<tutor@python.org>
> Subject: [Tutor] Variables and constants [was Re: working with strings in
>  python3]
>
> Rance Hall wrote:
>
> > Variables are variable, that's why we call them variable.
> > Constants are constant, and that's why we call them constant.
>
> And Python has neither variables nor constants in the sense that (say)
> Pascal, C or Fortran have, even though we often use the same words.
>
> The differences are quite deep, but they're also subtle.
>
> In classic programming languages with variables and/or constants, the
> model is that names like "x" refer to *memory locations*. If the name is
> a variable, the compiler will allow you to mutate the value stored at
> that memory location; if the name is a constant, it won't. But once a
> name "x" is associated with memory location (say) 123456, it can never
> move. But note that the "variability" or "constantness" is associated
> with the *name* (the memory location), not the value.
>
> In languages like Python, names are associated with values, without
> reference to memory locations. In this case, the "variability" or
> "constantness" is associated with the *value*, not the name.
>
> Consider x = 42; x = x+1. In Pascal, C or Fortran, this will actually
> change a block of memory that had the value 42 into 43 instead:
>
> The name x points to a memory location with value 42.
> Leave the name pointing to the same place, but change the value to 43
> instead.
>
> In Python, the situation is different:
>
> The name x points to an object with value 42.
> Leave the object 42 alone, but change the name x to point to an object
> with value 43 instead.
>
>
>
> --
> Steven
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>

If a value has no name bound to it, python figures that out and destroys it

-- 
Joel Goldstick
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to