[Tutor] Variables and constants [was Re: working with strings inpython3]

Joel Goldstick joel.goldstick at gmail.com
Tue Apr 19 23:37:08 CEST 2011


On Tue, Apr 19, 2011 at 3:32 PM, <bodsda at 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 <steve at pearwood.info>
> Sender: tutor-bounces+bodsda=ubuntu.com at python.org
> Date: Wed, 20 Apr 2011 04:24:03
> To: tutor<tutor at 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 at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
> _______________________________________________
> Tutor maillist  -  Tutor at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110419/c3112b7a/attachment-0001.html>


More information about the Tutor mailing list