Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #31879
| References | (6 earlier) <5083c7da$0$29978$c3e8da3$5496439d@news.astraweb.com> <mailman.2588.1350819797.27098.python-list@python.org> <508448c6$0$29978$c3e8da3$5496439d@news.astraweb.com> <mailman.2601.1350850942.27098.python-list@python.org> <5084e819$0$29897$c3e8da3$5496439d@news.astraweb.com> |
|---|---|
| Date | 2012-10-22 18:03 +1100 |
| Subject | Re: A desperate lunge for on-topic-ness |
| From | Chris Angelico <rosuav@gmail.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.2618.1350889423.27098.python-list@python.org> (permalink) |
On Mon, Oct 22, 2012 at 5:30 PM, Steven D'Aprano <steve+comp.lang.python@pearwood.info> wrote: > For languages without static types, what other reasons for declaring > variables are there? The main one is scope nesting. Compare a few different languages. Python: If you don't declare, it's global if you don't rebind it, but local if you do. You may declare variables as global or nonlocal. PHP: If you don't declare, it's local, but functions are in a separate scope. C: If you don't declare, it's looked for in some broader scope. If it's not declared in any scope, error. All three approaches make reasonable sense. The PHP one is perfectly consistent, but would be hopelessly impractical if all your function names had to be marked off as globals. (Plus PHP has superglobals, with their own Marvellous mess.) Python's system "just works" most of the time, but can introduce yet another trap for the unsuspecting newbie who doesn't understand the difference between rebinding and mutating; I've not looked into multiple levels of closures but I suspect there'll be odd limitations there, as there's only one "nonlocal" keyword. The C style has administrative overhead (requiring explicit declarations for all variables), but allows full flexibility (variables having narrower scope than entire functions, infinite nesting of scopes, etc). Incidentally, variable declarations don't have to be connected with static typing. JavaScript/ECMAScript simply has 'var x;' to declare that x exists in this function. But it's hardly a language that I'd hold up as a shining example; a var declaration anywhere in a function makes that variable name local to that entire function. There's actually no block scoping at all. And then there's the whole confusion of the global object, 'this', and 'with' statements... You knew I was going to cite it sooner or later :) Pike has true block scoping, though unlike C++, Pike does not guarantee that destructors will be called immediately at the close brace (but zero-reference objects will be cleaned up, including destructor calls, at the next function return - even if not the current function). Variables can be mostly-statically-typed, or can be declared as 'mixed' and be rebound freely (like in JS and Python). So scoped variable declarations and static typing are quite orthogonal. ChrisA
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: A desperate lunge for on-topic-ness Jean-Michel Pichavant <jeanmichel@sequans.com> - 2012-10-19 11:21 +0200
Re: A desperate lunge for on-topic-ness Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-10-19 22:14 +0000
Re: A desperate lunge for on-topic-ness Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2012-10-19 20:23 -0400
Re: A desperate lunge for on-topic-ness Grant Edwards <invalid@invalid.invalid> - 2012-10-20 14:18 +0000
Re: A desperate lunge for on-topic-ness Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2012-10-20 15:10 -0400
Re: A desperate lunge for on-topic-ness Walter Hurry <walterhurry@lavabit.com> - 2012-10-20 20:02 +0000
Re: A desperate lunge for on-topic-ness David Robinow <drobinow@gmail.com> - 2012-10-20 16:02 -0400
Re: A desperate lunge for on-topic-ness Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-10-21 08:07 +0000
Re: A desperate lunge for on-topic-ness Chris Angelico <rosuav@gmail.com> - 2012-10-21 20:20 +1100
Re: A desperate lunge for on-topic-ness Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-10-21 10:00 +0000
Re: printing (was: A desperate lunge for on-topic-ness) Tim Chase <python.list@tim.thechases.com> - 2012-10-21 06:03 -0500
Re: A desperate lunge for on-topic-ness Chris Angelico <rosuav@gmail.com> - 2012-10-21 22:43 +1100
Re: A desperate lunge for on-topic-ness Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-10-21 19:11 +0000
Re: A desperate lunge for on-topic-ness Grant Edwards <invalid@invalid.invalid> - 2012-10-21 19:23 +0000
Re: A desperate lunge for on-topic-ness Roy Smith <roy@panix.com> - 2012-10-21 16:19 -0400
Re: A desperate lunge for on-topic-ness Chris Angelico <rosuav@gmail.com> - 2012-10-22 07:38 +1100
Re: A desperate lunge for on-topic-ness Chris Angelico <rosuav@gmail.com> - 2012-10-22 07:22 +1100
Re: A desperate lunge for on-topic-ness Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-10-22 06:30 +0000
Re: A desperate lunge for on-topic-ness Chris Angelico <rosuav@gmail.com> - 2012-10-22 18:03 +1100
Re: A desperate lunge for on-topic-ness Roy Smith <roy@panix.com> - 2012-10-22 08:29 -0400
RE: A desperate lunge for on-topic-ness "Prasad, Ramit" <ramit.prasad@jpmorgan.com> - 2012-10-22 20:48 +0000
Re: A desperate lunge for on-topic-ness Ian Kelly <ian.g.kelly@gmail.com> - 2012-10-22 16:02 -0600
Re: A desperate lunge for on-topic-ness Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2012-10-22 21:39 -0400
Re: A desperate lunge for on-topic-ness Joshua Landau <joshua.landau.ws@gmail.com> - 2012-10-23 08:35 +0100
Re: A desperate lunge for on-topic-ness Ian Kelly <ian.g.kelly@gmail.com> - 2012-10-23 10:50 -0600
Re: A desperate lunge for on-topic-ness Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-10-23 22:34 +0000
Re: A desperate lunge for on-topic-ness Ian Kelly <ian.g.kelly@gmail.com> - 2012-10-23 17:24 -0600
Re: A desperate lunge for on-topic-ness Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2012-10-24 00:04 +0000
Re: A desperate lunge for on-topic-ness Gene Heskett <gheskett@wdtv.com> - 2012-10-21 07:08 -0400
Re: A desperate lunge for on-topic-ness Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2012-10-21 12:42 -0400
Re: A desperate lunge for on-topic-ness DJC <djc@news.invalid> - 2012-10-21 15:06 +0100
Re: A desperate lunge for on-topic-ness Tim Chase <python.list@tim.thechases.com> - 2012-10-19 22:27 -0500
Re: A desperate lunge for on-topic-ness rusi <rustompmody@gmail.com> - 2012-10-20 00:35 -0700
Re: A desperate lunge for on-topic-ness Roy Smith <roy@panix.com> - 2012-10-20 16:37 -0400
Re: A desperate lunge for on-topic-ness Walter Hurry <walterhurry@lavabit.com> - 2012-10-21 21:58 +0000
csiph-web