Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!news.glorb.com!news.alt.net!news.astraweb.com!border6.newsrouter.astraweb.com!not-for-mail From: Ben Finney Newsgroups: comp.lang.python Subject: Re: Python scoping References: <2f69dda9-9532-4fd1-af06-ba85cc2a0e33@v5g2000yqn.googlegroups.com> <87ei2oqaqe.fsf@benfinney.id.au> X-Public-Key-ID: 0xAC128405 X-Public-Key-Fingerprint: 517C F14B B2F3 98B0 CB35 4855 B8B2 4C06 AC12 8405 X-Public-Key-URL: http://www.benfinney.id.au/contact/bfinney-pubkey.asc X-Post-From: Ben Finney Date: Tue, 21 Jun 2011 12:38:42 +1000 Message-ID: <87aadbrjrh.fsf@benfinney.id.au> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) Cancel-Lock: sha1:D6U0/O/bXl9XwuE04hhashlaKx0= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Lines: 42 Organization: Unlimited download news at news.astraweb.com NNTP-Posting-Host: a08fcbdc.news.astraweb.com X-Trace: DXC=g4FlF?RodORJ[9olalG_WRL?0kYOcDh@ZSBc;\8ijUd[WhC<00QF0FQUGD@iN[Hd?_5g4E7N:;V]V Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:8057 Chris Angelico writes: > On Tue, Jun 21, 2011 at 10:39 AM, Ben Finney wrote: > > Instead, Python has objects, and references to those objects so you > > can get at them. The Python documentation, much to my frustration, > > calls these references “variables” even though that gives exactly > > the wrong implication of how they'd behave. > > But variable names in C and variable names in Python follow fairly > similar rules. The names are similar, yes. But names are not variables, and the conceptual baggage of the term “variable” simply doesn't apply to a Python identifier. > Yes, there's the whole thing of automatic sharing and automatic > deallocation, but the name still follows rules of scoping that are > very similar - but more flexible in C. The *binding* is scoped. > > With the assignment statements (the statements using ‘txt = …’), the > > name ‘txt’ is bound as a reference to a value. It's not a C-like > > variable; it doesn't have a type, it doesn't need to be declared, > > etc. It's just a name, that you can bind to exactly one value any > > time you like. > > It does have a type. It's a Python object. No, a name is not a Python object, and has no type. A name is simply an identifier. > That data type can hold any one "thing". :) A name refers to an object, it doesn't “hold” anything. -- \ “… it's best to confuse only one issue at a time.” —Brian W. | `\ Kernighan and Dennis M. Ritchie, _The C programming language_, | _o__) 1988 | Ben Finney