Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #39463 > unrolled thread
| Started by | Piterrr <piterrr.dolinski@gmail.com> |
|---|---|
| First post | 2013-02-21 13:26 -0800 |
| Last post | 2013-02-25 19:37 -0800 |
| Articles | 20 on this page of 161 — 34 participants |
Back to article view | Back to comp.lang.python
Python Newbie Piterrr <piterrr.dolinski@gmail.com> - 2013-02-21 13:26 -0800
Re: Python Newbie Ian Kelly <ian.g.kelly@gmail.com> - 2013-02-21 14:54 -0700
Re: Python Newbie MRAB <python@mrabarnett.plus.com> - 2013-02-21 21:58 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-22 08:59 +1100
Re: Python Newbie Peter Pearson <ppearson@nowhere.invalid> - 2013-02-21 22:03 +0000
Re: Python Newbie Dave Angel <davea@davea.name> - 2013-02-21 17:22 -0500
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-21 14:40 -0800
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-22 10:21 +1100
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-21 15:34 -0800
Re: Python Newbie Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-02-21 23:48 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-22 11:32 +1100
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-23 11:58 -0700
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-21 15:34 -0800
Re: Python Newbie Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-02-21 23:27 +0000
Re: Python Newbie Ian Kelly <ian.g.kelly@gmail.com> - 2013-02-21 16:55 -0700
Re: Python Newbie rusi <rustompmody@gmail.com> - 2013-02-21 22:57 -0800
Re: Python Newbie Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-22 10:26 +0000
Re: Python Newbie Steve Simmons <square.steve@gmail.com> - 2013-02-22 12:05 +0100
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-22 22:23 +1100
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-23 16:04 -0700
Re: Python Newbie Vito De Tullio <vito.detullio@gmail.com> - 2013-02-24 09:23 +0100
Re: Python Newbie "J.R." <groups_jr-1@yahoo.com.br> - 2013-02-24 23:02 -0300
Re: Python Newbie Roy Smith <roy@panix.com> - 2013-02-24 21:03 -0500
Re: Python Newbie "J.R." <groups_jr-1@yahoo.com.br> - 2013-02-24 23:35 -0300
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 13:31 +1100
Re: Python Newbie Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-02-21 19:35 -0500
Re: Python Newbie Mitya Sirenef <msirenef@lightbird.net> - 2013-02-21 23:50 -0500
Re: Python Newbie Rui Maciel <rui.maciel@gmail.com> - 2013-02-22 11:58 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-22 23:12 +1100
Re: Python Newbie Rui Maciel <rui.maciel@gmail.com> - 2013-02-22 13:50 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-23 01:05 +1100
Re: Python Newbie Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-23 00:03 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-23 11:21 +1100
Re: Python Newbie Duncan Booth <duncan.booth@invalid.invalid> - 2013-02-22 14:26 +0000
Re: Python Newbie Steve Simmons <square.steve@gmail.com> - 2013-02-22 15:45 +0100
Re: Python Newbie Duncan Booth <duncan.booth@invalid.invalid> - 2013-02-22 15:02 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-23 02:06 +1100
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-22 13:37 -0800
Re: Python Newbie Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-02-22 22:08 +0000
Re: Python Newbie Ian Kelly <ian.g.kelly@gmail.com> - 2013-02-22 15:45 -0700
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-22 15:38 -0800
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-23 11:17 +1100
Re: Python Newbie Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-02-23 13:29 -0500
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-24 08:38 +1100
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-23 15:52 -0700
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-24 10:18 +1100
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-23 15:46 -0800
Re: Python Newbie Larry Hudson <orgnut@yahoo.com> - 2013-02-23 20:20 -0800
Re: Python Newbie Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-02-24 14:34 +0000
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 07:46 -0800
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 02:52 +1100
Re: Python Newbie Roy Smith <roy@panix.com> - 2013-02-24 11:22 -0500
Re: Python Newbie Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-24 17:44 +0000
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 11:29 -0800
Re: Python Newbie Joshua Landau <joshua.landau.ws@gmail.com> - 2013-02-24 21:35 +0000
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 14:43 -0800
Re: Python Newbie Joel Goldstick <joel.goldstick@gmail.com> - 2013-02-24 18:05 -0500
Re: Python Newbie Joshua Landau <joshua.landau.ws@gmail.com> - 2013-02-24 23:13 +0000
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 14:43 -0800
Re: Python Newbie Larry Hudson <orgnut@yahoo.com> - 2013-02-26 00:32 -0800
Re: Python Newbie rurpy@yahoo.com - 2013-02-26 10:23 -0800
Re: Python Newbie Ethan Furman <ethan@stoneleaf.us> - 2013-02-26 10:59 -0800
Re: Python Newbie rurpy@yahoo.com - 2013-02-26 13:30 -0800
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-24 18:31 -0700
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 09:08 +1100
Re: Python Newbie Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-02-24 23:18 +0000
Re: Python Newbie Joshua Landau <joshua.landau.ws@gmail.com> - 2013-02-24 22:51 +0000
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 15:38 -0800
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 10:45 +1100
Re: Python Newbie Ethan Furman <ethan@stoneleaf.us> - 2013-02-24 15:53 -0800
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 16:08 -0800
Re: Python Newbie Joshua Landau <joshua.landau.ws@gmail.com> - 2013-02-25 00:28 +0000
Re: Python Newbie Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-02-25 00:38 +0000
Re: Python Newbie Ethan Furman <ethan@stoneleaf.us> - 2013-02-24 16:33 -0800
Re: Python Newbie Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-02-25 00:45 +0000
Re: Python Newbie Roy Smith <roy@panix.com> - 2013-02-24 19:50 -0500
Re: Python Newbie Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-25 01:04 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 12:27 +1100
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-24 18:42 -0700
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 12:24 +1100
Re: Python Newbie Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-02-25 01:44 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 12:53 +1100
Re: Python Newbie MRAB <python@mrabarnett.plus.com> - 2013-02-25 02:23 +0000
Re: Python Newbie Ethan Furman <ethan@stoneleaf.us> - 2013-02-24 18:59 -0800
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 16:08 -0800
Re: Python Newbie Roy Smith <roy@panix.com> - 2013-02-24 19:42 -0500
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 15:38 -0800
Re: Python Newbie Joshua Landau <joshua.landau.ws@gmail.com> - 2013-02-24 23:21 +0000
Re: Python Newbie Dave Angel <davea@davea.name> - 2013-02-24 17:47 -0500
Re: Python Newbie Serhiy Storchaka <storchaka@gmail.com> - 2013-02-25 14:40 +0200
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 07:46 -0800
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-23 22:23 -0700
Re: Python Newbie MRAB <python@mrabarnett.plus.com> - 2013-02-24 00:11 +0000
Re: Python Newbie Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-02-24 12:37 -0500
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-24 10:56 -0700
Re: Python Newbie Roy Smith <roy@panix.com> - 2013-02-24 13:07 -0500
Re: Python Newbie Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-02-24 21:01 -0500
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-22 15:38 -0800
Re: Python Newbie Terry Reedy <tjreedy@udel.edu> - 2013-02-22 20:04 -0500
Re: Python Newbie rurpy@yahoo.com - 2013-02-22 18:48 -0800
Re: Python Newbie Mitya Sirenef <msirenef@lightbird.net> - 2013-02-22 20:47 -0500
Re: Python Newbie Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-23 02:02 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-23 13:18 +1100
Re: Python Newbie Grant Edwards <invalid@invalid.invalid> - 2013-02-24 18:19 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 07:25 +1100
Re: Python Newbie Mitya Sirenef <msirenef@lightbird.net> - 2013-02-22 21:40 -0500
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-23 13:48 +1100
Re: Python Newbie Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-02-23 02:59 +0000
Re: Python Newbie Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-02-23 13:34 -0500
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-24 08:40 +1100
Re: Python Newbie Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-02-24 12:41 -0500
Re: Python Newbie Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-23 04:13 +0000
Re: Python Newbie Serhiy Storchaka <storchaka@gmail.com> - 2013-02-23 11:48 +0200
Re: Python Newbie Rui Maciel <rui.maciel@gmail.com> - 2013-02-23 12:30 +0000
Re: Python Newbie Steve Simmons <square.steve@gmail.com> - 2013-02-23 16:43 +0100
Re: Python Newbie jmfauth <wxjmfauth@gmail.com> - 2013-02-23 10:44 -0800
Re: Python Newbie Ian Kelly <ian.g.kelly@gmail.com> - 2013-02-23 12:13 -0700
Re: Python Newbie Ethan Furman <ethan@stoneleaf.us> - 2013-02-23 11:08 -0800
Re: Python Newbie jmfauth <wxjmfauth@gmail.com> - 2013-02-23 12:53 -0800
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-24 08:48 +1100
Re: Python Newbie Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-02-24 00:02 +0000
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-23 12:16 -0700
Re: Python Newbie Matej Cepl <mcepl@redhat.com> - 2013-02-24 00:06 +0100
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-24 02:51 +1100
Re: Python Newbie Matej Cepl <mcepl@redhat.com> - 2013-02-24 00:04 +0100
Re: Python Newbie Ethan Furman <ethan@stoneleaf.us> - 2013-02-23 08:32 -0800
Re: Python Newbie Steve Simmons <square.steve@gmail.com> - 2013-02-23 18:39 +0100
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-23 12:19 -0700
Re: Python Newbie Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-02-24 17:11 +0000
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 11:40 -0800
Re: Python Newbie Mitya Sirenef <msirenef@lightbird.net> - 2013-02-24 15:06 -0500
Re: Python Newbie "Michael Ross" <gmx@ross.cx> - 2013-02-24 21:33 +0100
Re: Python Newbie MRAB <python@mrabarnett.plus.com> - 2013-02-24 20:34 +0000
Re: Python Newbie Mark Lawrence <breamoreboy@yahoo.co.uk> - 2013-02-24 20:41 +0000
Re: Python Newbie Ethan Furman <ethan@stoneleaf.us> - 2013-02-24 12:34 -0800
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 07:42 +1100
Re: Python Newbie Roy Smith <roy@panix.com> - 2013-02-24 15:48 -0500
Re: Python Newbie Joshua Landau <joshua.landau.ws@gmail.com> - 2013-02-24 21:58 +0000
Re: Python Newbie Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2013-02-24 21:08 -0500
Re: Python Newbie Joshua Landau <joshua.landau.ws@gmail.com> - 2013-02-25 02:59 +0000
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 07:47 +1100
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 07:58 +1100
Re: Python Newbie Roy Smith <roy@panix.com> - 2013-02-24 16:08 -0500
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 08:44 +1100
Re: Python Newbie Mitya Sirenef <msirenef@lightbird.net> - 2013-02-24 17:40 -0500
Re: Python Newbie Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-25 01:11 +0000
Re: Python Newbie Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-25 00:42 +0000
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-24 18:34 -0700
Re: Python Newbie Ethan Furman <ethan@stoneleaf.us> - 2013-02-24 14:33 -0800
Re: Python Newbie Albert Hopkins <marduk@letterboxes.org> - 2013-02-24 18:32 -0500
Re: Python Newbie Chris Angelico <rosuav@gmail.com> - 2013-02-25 10:44 +1100
Re: Python Newbie Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-02-25 01:06 +0000
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-24 11:40 -0800
Re: Python Newbie piterrr.dolinski@gmail.com - 2013-02-22 13:37 -0800
Re: Python Newbie Mitya Sirenef <msirenef@lightbird.net> - 2013-02-22 20:05 -0500
Re: Python Newbie Gene Heskett <gheskett@wdtv.com> - 2013-02-23 12:32 -0500
Re: Python Newbie Steve Simmons <square.steve@gmail.com> - 2013-02-23 19:10 +0100
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-23 11:40 -0700
Re: Python Newbie Michael Torrie <torriem@gmail.com> - 2013-02-23 12:15 -0700
Re: Python Newbie Gene Heskett <gheskett@wdtv.com> - 2013-02-23 17:49 -0500
Re: Python Newbie Nick Mellor <thebalancepro@gmail.com> - 2013-02-25 19:37 -0800
Page 2 of 9 — ← Prev page 1 [2] 3 4 5 6 7 8 9 Next page →
| From | Vito De Tullio <vito.detullio@gmail.com> |
|---|---|
| Date | 2013-02-24 09:23 +0100 |
| Message-ID | <mailman.2396.1361694253.2939.python-list@python.org> |
| In reply to | #39479 |
piterrr.dolinski@gmail.com wrote:
> You see, Javascript, for one, behaves the same way as Python (no variable
> declaration) but JS has curly braces and you know the variable you have
> just used is limited in scope to the code within the { }. With Python, you
> have to search the whole file.
I don't know if you know javascript, but I think your experience with it is
limited, as you listed two of of the many common pitfalls of javascript:
javascript has optional variable declaration, but if you don't declare a
variable (such as a local variable in a function) it binds itself in the
global scope;
in c/c++/c#/java... curly braces define a new scope, in javascript no.
if you do in javascript
function foo() {
if (some condition) {
a = 'something';
}
alert(a);
}
the moment you call the foo() function (and some condition is true), a
global variable "a" is created. (this time you *really* need to search not
the whole .js file, but the whole project, as there is no "file-level"
globals in javascript)
if you instead use the 'var' keyword to define explicitly a local variable
function foo() {
if (some condition) {
var a = 'something';
}
alert(a);
}
while you don't create a global variable, the "a" variable is still
accessible outside the "if" braces.
this is the reason most javascript linters (most notably jslint) force the
first statement of every function to be the definition of all function
variables.
by this point of view, python and javascript have the same philosophy, but
at least python doesn't allow implicit global variable definition
--
ZeD
[toc] | [prev] | [next] | [standalone]
| From | "J.R." <groups_jr-1@yahoo.com.br> |
|---|---|
| Date | 2013-02-24 23:02 -0300 |
| Message-ID | <kgegna$koj$1@speranza.aioe.org> |
| In reply to | #39479 |
On 21/02/2013 19:40, piterrr.dolinski@gmail.com wrote:
<snip>
> I am nervous about using variables "out of the blue", without having
> to declare them. For example, when I write "i = 0" it is perfectly OK
> to Python without 'i' being declared earlier. How do I know that I
> haven't used this variable earlier and I am unintentionally
> overwriting the value? I find I constantly have to use the search
> facility in the editor, which is not fun.
>
> You see, Javascript, for one, behaves the same way as Python (no
> variable declaration) but JS has curly braces and you know the
> variable you have just used is limited in scope to the code within
> the { }. With Python, you have to search the whole file.
>
No, JavaScript - or better, ECMAScript -, does have variable
declaration. If you don't declare a variable with the "var" statement it
will become an unintentional global variable which is a very bad thing.
If the variable statement occurs inside a Function Declaration, the
variables are defined with function-local scope in that function.
Otherwise, they are defined with global scope (that is, they
are created as members of the global object. Variables are created when
the execution scope is entered. A Block { } does not define a new
execution scope.
PS.: JavaScript is a trademark, and the actual language name is
specified as ECMAScript.
See <http://ecma-international.org/ecma-262/5.1/>
--
Joao Rodrigues (J.R.)
[toc] | [prev] | [next] | [standalone]
| From | Roy Smith <roy@panix.com> |
|---|---|
| Date | 2013-02-24 21:03 -0500 |
| Message-ID | <roy-718B8C.21035724022013@news.panix.com> |
| In reply to | #39859 |
In article <kgegna$koj$1@speranza.aioe.org>, "J.R." <groups_jr-1@yahoo.com.br> wrote: > PS.: JavaScript is a trademark, and the actual language name is > specified as ECMAScript. The decision whether to call it JavaScript or ECMAScript really comes down to, "Do you want to be correct, or do you want people to know what you're talking about?"
[toc] | [prev] | [next] | [standalone]
| From | "J.R." <groups_jr-1@yahoo.com.br> |
|---|---|
| Date | 2013-02-24 23:35 -0300 |
| Message-ID | <kgeiko$oql$1@speranza.aioe.org> |
| In reply to | #39860 |
On 24/02/2013 23:03, Roy Smith wrote: > In article <kgegna$koj$1@speranza.aioe.org>, > "J.R." <groups_jr-1@yahoo.com.br> wrote: > >> PS.: JavaScript is a trademark, and the actual language name is >> specified as ECMAScript. > > The decision whether to call it JavaScript or ECMAScript really comes > down to, "Do you want to be correct, or do you want people to know what > you're talking about?" > I was giving the reason why I used the language standardized name (ECMAScript) in the previous paragraph that you snipped. However it is perfectly okay using the term "JavaScript" when referring to an ECMAScript implementation. The same happens when you ask for a Band-Aid, not a bandage; or ask for Kleenex, not tissue, or when you “Google” for a word instead of searching for it. -- Joao Rodrigues (J.R.)
[toc] | [prev] | [next] | [standalone]
| From | Chris Angelico <rosuav@gmail.com> |
|---|---|
| Date | 2013-02-25 13:31 +1100 |
| Message-ID | <mailman.2485.1361759981.2939.python-list@python.org> |
| In reply to | #39860 |
On Mon, Feb 25, 2013 at 1:03 PM, Roy Smith <roy@panix.com> wrote: > In article <kgegna$koj$1@speranza.aioe.org>, > "J.R." <groups_jr-1@yahoo.com.br> wrote: > >> PS.: JavaScript is a trademark, and the actual language name is >> specified as ECMAScript. > > The decision whether to call it JavaScript or ECMAScript really comes > down to, "Do you want to be correct, or do you want people to know what > you're talking about?" "JavaScript/ECMAScript" works in many situations. Wait, let me rephrase that. The expression "JavaScript/ECMAScript" works in many situations. ChrisA
[toc] | [prev] | [next] | [standalone]
| From | Dennis Lee Bieber <wlfraed@ix.netcom.com> |
|---|---|
| Date | 2013-02-21 19:35 -0500 |
| Message-ID | <mailman.2227.1361493352.2939.python-list@python.org> |
| In reply to | #39463 |
On Thu, 21 Feb 2013 13:26:41 -0800 (PST), Piterrr
<piterrr.dolinski@gmail.com> declaimed the following in
gmane.comp.python.general:
> For example, you open a source file in different editors and the indentation levels change even though i only have spaces, no tabs (compare Windows Notepad and Notepad++).
Is one using a proportional spaced font while the other is using a
mono spaced font?
> yntax. For example, when I write "if (myVariable != 0):" then this is OK but "for (i in intAry):" results in syntax error. Apparently Python has problems with my use of parentheses. How retarded. I
No -- (i in intAry) is returning a single boolean result (is the
value of "i" IN the value of "intAry"), so "for (i in intAry)" becomes
the equivalent of "for True" or "for False" depending on the result of
the "in" operator.
--
Wulfraed Dennis Lee Bieber AF6VN
wlfraed@ix.netcom.com HTTP://wlfraed.home.netcom.com/
[toc] | [prev] | [next] | [standalone]
| From | Mitya Sirenef <msirenef@lightbird.net> |
|---|---|
| Date | 2013-02-21 23:50 -0500 |
| Message-ID | <mailman.2237.1361508661.2939.python-list@python.org> |
| In reply to | #39463 |
On 02/21/2013 04:26 PM, Piterrr wrote:
> Hi folks.
> I am a long time C sharp dev, just learning Python now due to job
> requirements. My initial impression is that Python has got to be the
> most ambiguous and vague language I have seen to date. I have major
> issues with the fact that white space matters. How do you deal with
> this? For example, you open a source file in different editors and the
> indentation levels change even though i only have spaces, no tabs
> (compare Windows Notepad and Notepad++). Which editor do you trust? In
> addition, code is difficult to read because you cannot lay it out in
> easily discernable blocks. For example, I always tend to indent a full
> 'if' statement block so that it is easier to see where the if block
> starts and ends. Can't do that in Python. What is even more
> frustrating is that Python is inconsistent with its syntax. For
> example, when I write "if (myVariable != 0):" then this is OK but "for
> (i in intAry):" results in syntax error. Apparently Python has
> problems with my use of parentheses. How reta
> rded. I
> think I will rather find another job than eat my nerves with Python.
> Any comments on this before I quit my job?
I think you need to distinguish between your own stylistic preference
and considerations of writing in a style that is clear and readable for
other developers who will be working with your code.
For example:
...
if condition {
...
}
...
Looks very unclear and confusing to me. Whether it's C# or ruby or
anything else, most devs don't indent like that; and that raises a
question - was an outer block accidentally deleted? How do I know if it's
your personal style or a mistake?
Even if I know it is intentional, it's not clear why an if block is
treated in a special way... what about for loops, try/except blocks,
etc? To me, if operator being at the same indentation indicates that it
is executed after the statements that precede it and before the ones
that follow it -- can't get any clearer than that!
Things like:
if (condition == value)
look like unnecessary visual noise to me. Parens are useful and are
meant to group conditions when their number becomes unwieldy and hard to
read and to override operator order of precendence (or rather to avoid
having to remember it):
if (condition == value * modifier) or (condition2 == default_value):
In regard to "truthy" evaluation -- it makes more sense if variables
have good names, as they should; for example:
if mylist: .. do something with the list ..
if mystring: .. process string ..
if my_things_count:
.. there were some things, process them ..
else:
.. there were no things! ..
In all of these cases, my intent is to ask if the value is empty or not,
or blank, or holds some non-false contents. It may also be a custom
object which is responsible for telling me, in a standardized way, if
it's blank/False or not. In 99.8% of cases, do I care if mystring is
None or '' or False? Of course not! Do I care if mylist is None or []?
Almost certainly not.
And the nice thing is, in the rare case that you do care, you'll
write 'if mylist is None:' -- and that alerts the reader to the fact
that mylist's specific value is important.
Reducing unnecessary visual noise in the code is a worthy goal -- it
lets your eyes focus more on the logic of the program.
HTH, -m
--
Lark's Tongue Guide to Python: http://lightbird.net/larks/
Language is like money, without which specific relative values may well
exist and be felt, but cannot be reduced to a common denominator.
George Santayana
[toc] | [prev] | [next] | [standalone]
| From | Rui Maciel <rui.maciel@gmail.com> |
|---|---|
| Date | 2013-02-22 11:58 +0000 |
| Message-ID | <kg7mfi$8oh$1@dont-email.me> |
| In reply to | #39519 |
Mitya Sirenef wrote: > Looks very unclear and confusing to me. Whether it's C# or ruby or > anything else, most devs don't indent like that; The Go programming language makes that style mandatory. Rui Maciel
[toc] | [prev] | [next] | [standalone]
| From | Chris Angelico <rosuav@gmail.com> |
|---|---|
| Date | 2013-02-22 23:12 +1100 |
| Message-ID | <mailman.2259.1361535166.2939.python-list@python.org> |
| In reply to | #39554 |
On Fri, Feb 22, 2013 at 10:58 PM, Rui Maciel <rui.maciel@gmail.com> wrote: > Mitya Sirenef wrote: > >> Looks very unclear and confusing to me. Whether it's C# or ruby or >> anything else, most devs don't indent like that; > > The Go programming language makes that style mandatory. [citation needed] What do you mean by "that style"? The OP's style with the 'if' indented? I just checked out golang.org for examples, and they're written in OTBS. ChrisA
[toc] | [prev] | [next] | [standalone]
| From | Rui Maciel <rui.maciel@gmail.com> |
|---|---|
| Date | 2013-02-22 13:50 +0000 |
| Message-ID | <kg7t19$a63$1@dont-email.me> |
| In reply to | #39556 |
Chris Angelico wrote: > On Fri, Feb 22, 2013 at 10:58 PM, Rui Maciel <rui.maciel@gmail.com> wrote: >> Mitya Sirenef wrote: >> >>> Looks very unclear and confusing to me. Whether it's C# or ruby or >>> anything else, most devs don't indent like that; >> >> The Go programming language makes that style mandatory. > > [citation needed] > > What do you mean by "that style"? The OP's style with the 'if' > indented? I just checked out golang.org for examples, and they're > written in OTBS. Read Mitya Sirenef's post, specifically the bit I've replied to. Rui Maciel
[toc] | [prev] | [next] | [standalone]
| From | Chris Angelico <rosuav@gmail.com> |
|---|---|
| Date | 2013-02-23 01:05 +1100 |
| Message-ID | <mailman.2267.1361541920.2939.python-list@python.org> |
| In reply to | #39564 |
On Sat, Feb 23, 2013 at 12:50 AM, Rui Maciel <rui.maciel@gmail.com> wrote: > Chris Angelico wrote: > >> On Fri, Feb 22, 2013 at 10:58 PM, Rui Maciel <rui.maciel@gmail.com> wrote: >>> Mitya Sirenef wrote: >>> >>>> Looks very unclear and confusing to me. Whether it's C# or ruby or >>>> anything else, most devs don't indent like that; >>> >>> The Go programming language makes that style mandatory. >> >> [citation needed] >> >> What do you mean by "that style"? The OP's style with the 'if' >> indented? I just checked out golang.org for examples, and they're >> written in OTBS. > > > Read Mitya Sirenef's post, specifically the bit I've replied to. I did read it, and grammatically, your statement means that Go mandates the OP's style. Hence my statement that golang.org has code examples in OTBS, ergo Go cannot mandate the OP's style. Or else golang.org is wrong. That's certainly possible, but you know what they say about extraordinary claims. ChrisA
[toc] | [prev] | [next] | [standalone]
| From | Steven D'Aprano <steve+comp.lang.python@pearwood.info> |
|---|---|
| Date | 2013-02-23 00:03 +0000 |
| Message-ID | <51280736$0$29988$c3e8da3$5496439d@news.astraweb.com> |
| In reply to | #39567 |
On Sat, 23 Feb 2013 01:05:15 +1100, Chris Angelico wrote: > Or else golang.org is wrong. That's certainly possible, but you know > what they say about extraordinary claims. They must be true? "Extraordinary claims are always true" would be an extraordinary claim, and therefore true. I learned this from Weekly World News, the world's only reliable newspaper. http://weeklyworldnews.com/headlines/44680/pteranodon-terrifies-wyoming-town/ -- Steven
[toc] | [prev] | [next] | [standalone]
| From | Chris Angelico <rosuav@gmail.com> |
|---|---|
| Date | 2013-02-23 11:21 +1100 |
| Message-ID | <mailman.2317.1361578903.2939.python-list@python.org> |
| In reply to | #39630 |
On Sat, Feb 23, 2013 at 11:03 AM, Steven D'Aprano <steve+comp.lang.python@pearwood.info> wrote: > On Sat, 23 Feb 2013 01:05:15 +1100, Chris Angelico wrote: > >> Or else golang.org is wrong. That's certainly possible, but you know >> what they say about extraordinary claims. > > They must be true? > > "Extraordinary claims are always true" would be an extraordinary claim, > and therefore true. I learned this from Weekly World News, the world's > only reliable newspaper. > > http://weeklyworldnews.com/headlines/44680/pteranodon-terrifies-wyoming-town/ It's probably escaped from the town of Eureka, from the Syfy series (now cancelled, more's the pity) of the same name. In fact, if that happened in Eureka, it either wouldn't be remarkable, or would be this episode's Monster of the Week. Bit of a toss-up which, actually. ChrisA
[toc] | [prev] | [next] | [standalone]
| From | Duncan Booth <duncan.booth@invalid.invalid> |
|---|---|
| Date | 2013-02-22 14:26 +0000 |
| Message-ID | <XnsA16F92E78A66duncanbooth@127.0.0.1> |
| In reply to | #39564 |
Rui Maciel <rui.maciel@gmail.com> wrote: > Chris Angelico wrote: > >> On Fri, Feb 22, 2013 at 10:58 PM, Rui Maciel <rui.maciel@gmail.com> >> wrote: >>> Mitya Sirenef wrote: >>> >>>> Looks very unclear and confusing to me. Whether it's C# or ruby or >>>> anything else, most devs don't indent like that; >>> >>> The Go programming language makes that style mandatory. >> >> [citation needed] >> >> What do you mean by "that style"? The OP's style with the 'if' >> indented? I just checked out golang.org for examples, and they're >> written in OTBS. > > > Read Mitya Sirenef's post, specifically the bit I've replied to. > > Do you believe that post was talking about the indentation of the keyword 'if' relative to the statements in the same block, or did you think it was talking about the placement of the opening brace on the same line as the `if` statement? I believe that Mitya was talking about the former but that you assumed the latter. -- Duncan Booth
[toc] | [prev] | [next] | [standalone]
| From | Steve Simmons <square.steve@gmail.com> |
|---|---|
| Date | 2013-02-22 15:45 +0100 |
| Message-ID | <mailman.2270.1361544335.2939.python-list@python.org> |
| In reply to | #39569 |
On 22/02/2013 15:26, Duncan Booth wrote: > Rui Maciel <rui.maciel@gmail.com> wrote: > >> Chris Angelico wrote: >> >>> On Fri, Feb 22, 2013 at 10:58 PM, Rui Maciel <rui.maciel@gmail.com> >>> wrote: >>>> Mitya Sirenef wrote: >>>> >>>>> Looks very unclear and confusing to me. Whether it's C# or ruby or >>>>> anything else, most devs don't indent like that; >>>> The Go programming language makes that style mandatory. >>> [citation needed] >>> >>> What do you mean by "that style"? The OP's style with the 'if' >>> indented? I just checked out golang.org for examples, and they're >>> written in OTBS. >> >> Read Mitya Sirenef's post, specifically the bit I've replied to. >> >> > Do you believe that post was talking about the indentation of the keyword > 'if' relative to the statements in the same block, or did you think it was > talking about the placement of the opening brace on the same line as the > `if` statement? > > I believe that Mitya was talking about the former but that you assumed the > latter. > Oooh, this is making my head spin. Are you saying that the OP's question about proper indentation has resulted in an incorrectly answered post due to poor indentation of a reference to the indentation of another reference? Steve
[toc] | [prev] | [next] | [standalone]
| From | Duncan Booth <duncan.booth@invalid.invalid> |
|---|---|
| Date | 2013-02-22 15:02 +0000 |
| Message-ID | <XnsA16F976CBF504duncanbooth@127.0.0.1> |
| In reply to | #39570 |
Steve Simmons <square.steve@gmail.com> wrote: > > On 22/02/2013 15:26, Duncan Booth wrote: >> Rui Maciel <rui.maciel@gmail.com> wrote: >> >>> Chris Angelico wrote: >>> >>>> On Fri, Feb 22, 2013 at 10:58 PM, Rui Maciel <rui.maciel@gmail.com> >>>> wrote: >>>>> Mitya Sirenef wrote: >>>>> >>>>>> Looks very unclear and confusing to me. Whether it's C# or ruby >>>>>> or anything else, most devs don't indent like that; >>>>> The Go programming language makes that style mandatory. >>>> [citation needed] >>>> >>>> What do you mean by "that style"? The OP's style with the 'if' >>>> indented? I just checked out golang.org for examples, and they're >>>> written in OTBS. >>> >>> Read Mitya Sirenef's post, specifically the bit I've replied to. >>> >>> >> Do you believe that post was talking about the indentation of the >> keyword 'if' relative to the statements in the same block, or did you >> think it was talking about the placement of the opening brace on the >> same line as the `if` statement? >> >> I believe that Mitya was talking about the former but that you >> assumed the latter. >> > Oooh, this is making my head spin. Are you saying that the OP's > question about proper indentation has resulted in an incorrectly > answered post due to poor indentation of a reference to the > indentation of another reference? > > Steve Not at all, I'm saying that the OP's question about proper indentation has resulted in an incorrectly answered post due to poor substitution of ellipses in place of the word `code` compounded by replying to the original post rather than the post containing the OP's example of indentation (containing the aforementiond word `code`) combined with a failure to read and comprehend the entire thread leading to the incorrect answer. I hope that makes it all clear. -- Duncan Booth http://kupuguy.blogspot.com
[toc] | [prev] | [next] | [standalone]
| From | Chris Angelico <rosuav@gmail.com> |
|---|---|
| Date | 2013-02-23 02:06 +1100 |
| Message-ID | <mailman.2271.1361545569.2939.python-list@python.org> |
| In reply to | #39569 |
On Sat, Feb 23, 2013 at 1:45 AM, Steve Simmons <square.steve@gmail.com> wrote: > Oooh, this is making my head spin. Are you saying that the OP's question > about proper indentation has resulted in an incorrectly answered post due to > poor indentation of a reference to the indentation of another reference? ........... I think I'll go back to compiling and installing non-free NVIDIA drivers for Debian Unstable on a vital production server. Fraught with less danger. ChrisA
[toc] | [prev] | [next] | [standalone]
| From | piterrr.dolinski@gmail.com |
|---|---|
| Date | 2013-02-22 13:37 -0800 |
| Message-ID | <928d2cf7-728b-4f35-b8c9-4c9b958507e5@googlegroups.com> |
| In reply to | #39574 |
Thanks to everyone for all the posts, some friendly some not. I read all of them with genuine interest. So I am continuing to learn Python, here are my new observations for your consideration. There seems to be a "heated" argument about Python's apparently intentional ambiguity in conditional statements. Specifically, the issue is, is it more appropriate to write (as an example) if (some statement): # short form rather than if (some statement == true): # long form Some 50(?) years ago, C was designed so that everything other than 0 evaluated to true and was false otherwise. Fast forward to recent memory, when C# was designed, Microsoft claims they reviewed all the features of C, C++ and Java, pulled the best features from each of these languages and designed a new language that would help minimize the potential for planting bugs. Say what you want about MS inventions, but my experience is that to require the long form notation was a good decision. For me the fact that the short notation is legal in Python is a stepback in language design. Python inventors, when creating what is after all considered a contemporary language, should have known better. Call me psychopath if you will (have seen this in one post), but I shall continue to use the aforementioned long form as I always have, and no Python is going to change that. Today I learned the hard way that all function parameters in Python are passed by reference (meaning whatever happens to them inside a function, new values are always passed to caller). Not good. I got caught up on this. To combat the mostly unwanted behavior, inside a function I have to reassign variables intended to be local to new variables. A pain. Can anyone offer ONE reason why Python was designed that way? Out of curiosity, does anyone have any idea why function declarations are preceded by the keyword "def" rather than something more intuitive like "function" or at least "func", perhaps? Does anyone know what the benefit of writing the cryptic "elif" to mean "else if" is? Curiously, the default statement in an if/else chain is preceded by "else" and not "el". Someone said I am too narrow-sited appreciating C# and not open to alternate approaches to language design. Well if that someone says "def" is better than "function" and "elif" is better than "else if", then dare I say, you are obsessed with Python! So far I am getting the impression that Python is a toy language of some kind (similar to Basic of the early 80's), not really suitable for serious work. The only difference between these languages (admittedly, a serious one) is the existence of extensive libraries. Otherwise there would be no good reason for Python to exist. Nevertheless, it does exist and I have to learn it. As long as someone is paying for my time, that's OK with me. Peter
[toc] | [prev] | [next] | [standalone]
| From | Oscar Benjamin <oscar.j.benjamin@gmail.com> |
|---|---|
| Date | 2013-02-22 22:08 +0000 |
| Message-ID | <mailman.2306.1361570904.2939.python-list@python.org> |
| In reply to | #39615 |
On 22 February 2013 21:37, <piterrr.dolinski@gmail.com> wrote: > Thanks to everyone for all the posts, some friendly some not. I read all of them with genuine interest. > > So I am continuing to learn Python, here are my new observations for your consideration. > > There seems to be a "heated" argument about Python's apparently intentional ambiguity in conditional statements. Specifically, the issue is, is it more appropriate to write (as an example) > > if (some statement): # short form That should be some *expression* rather than some *statement*. Some languages allow all statements to be expressions but Python does not. > > rather than > > if (some statement == true): # long form There is no heated argument about whether to do this. The long form is pointless except perhaps in a test suite. > > Some 50(?) years ago, C was designed so that everything other than 0 evaluated to true and was false otherwise. Fast forward to recent memory, when C# was designed, Microsoft claims they reviewed all the features of C, C++ and Java, pulled the best features from each of these languages and designed a new language that would help minimize the potential for planting bugs. I'm sure that they, like most people designing/developing languages, did try to take the best features from other languages. Python does as well. > Say what you want about MS inventions, but my experience is that to require the long form notation was a good decision. For me the fact that the short notation is legal in Python is a stepback in language design. Python inventors, when creating what is after all considered a contemporary language, should have known better. Call me psychopath if you will (have seen this in one post), but I shall continue to use the aforementioned long form as I always have, and no Python is going to change that. If you want to be really careful you can use (feel free to add more brackets): if (((condition == True) == True)): Then you can be doubly sure it's true. > > > Today I learned the hard way that all function parameters in Python are passed by reference (meaning whatever happens to them inside a function, new values are always passed to caller). Not good. I got caught up on this. To combat the mostly unwanted behavior, inside a function I have to reassign variables intended to be local to new variables. A pain. Can anyone offer ONE reason why Python was designed that way? New values are not passed. The same object is accessed in both places. Sometimes this is useful and sometimes it is undesirable. The important thing is to learn how to use the features of a language to do what you want (instead of moaning about them for differing from some other language). > > Out of curiosity, does anyone have any idea why function declarations are preceded by the keyword "def" rather than something more intuitive like "function" or at least "func", perhaps? > > Does anyone know what the benefit of writing the cryptic "elif" to mean "else if" is? Curiously, the default statement in an if/else chain is preceded by "else" and not "el". > > Someone said I am too narrow-sited appreciating C# and not open to alternate approaches to language design. Well if that someone says "def" is better than "function" and "elif" is better than "else if", then dare I say, you are obsessed with Python! These things are just not that important. Every language has keywords that need to be learned. Would you prefer the C version "void f()"? > > So far I am getting the impression that Python is a toy language of some kind (similar to Basic of the early 80's), not really suitable for serious work. The only difference between these languages (admittedly, a serious one) is the existence of extensive libraries. Otherwise there would be no good reason for Python to exist. Nevertheless, it does exist and I have to learn it. As long as someone is paying for my time, that's OK with me. Those extensive libraries would not have been created for a toy language. Python had to have a reason to exist *before* people would expend that much time, money and energy on it. Oscar
[toc] | [prev] | [next] | [standalone]
| From | Ian Kelly <ian.g.kelly@gmail.com> |
|---|---|
| Date | 2013-02-22 15:45 -0700 |
| Message-ID | <mailman.2309.1361573184.2939.python-list@python.org> |
| In reply to | #39615 |
On Fri, Feb 22, 2013 at 2:37 PM, <piterrr.dolinski@gmail.com> wrote:
> There seems to be a "heated" argument about Python's apparently intentional ambiguity in conditional statements. Specifically, the issue is, is it more appropriate to write (as an example)
>
> if (some statement): # short form
>
> rather than
>
> if (some statement == true): # long form
Nobody would advocate that particular comparison. If the result of
"some statement" is already a boolean value, then just use that
expression in your if statement. Checking "if True == True:" is a
pointlessly verbose comparison when you can just check "if True:".
The tension here is not between "short form" and "long form" if
statements, but between using conditional expressions that evaluate to
booleans versus using conditional expressions that are implicitly
interpreted as booleans. Some people prefer only the former. Others
see value in the latter for some (not all!) conditions.
The usual advice given for implicit interpretation is that it is a
test for "something" versus "nothing". If I do "if x:" and it
evaluates as true, then I know there is something in x. Otherwise, I
have nothing: None, or zero, or an empty sequence, etc. Generally the
context will give you more information about what types are expected.
Personally, I find that this tends to be most useful as a test for
whether a sequence contains elements.
> Some 50(?) years ago, C was designed so that everything other than 0 evaluated to true and was false otherwise. Fast forward to recent memory, when C# was designed, Microsoft claims they reviewed all the features of C, C++ and Java, pulled the best features from each of these languages and designed a new language that would help minimize the potential for planting bugs. Say what you want about MS inventions, but my experience is that to require the long form notation was a good decision. For me the fact that the short notation is legal in Python is a stepback in language design. Python inventors, when creating what is after all considered a contemporary language, should have known better. Call me psychopath if you will (have seen this in one post), but I shall continue to use the aforementioned long form as I always have, and no Python is going to change that.
At least one part of the reason that Python does not specifically
require booleans in conditions is that the language did not originally
have a boolean type; 1 and 0 were generally used instead. The bool
type was not added until version 2.3, and requiring booleans in
conditions at that point would have broken a large amount of code.
> Today I learned the hard way that all function parameters in Python are passed by reference (meaning whatever happens to them inside a function, new values are always passed to caller).
Not quite. Python uses pass-by-object (also known as
"pass-by-sharing") semantics. The argument seen by the function is
the same object that was passed to it. The name bound to the object
inside the function is unrelated to the name bound to the object in
the caller's context, so that if you assign something else to the
name, it will not affect the object or its binding to the external
name. Since it's the same object, though, you can mutate the object
and then later observe those changes in the external context.
Note that this is only relevant for mutable data types. For immutable
types such as strings and ints, you cannot alter the passed-in object,
so it is semantically equivalent to pass-by-value without the overhead
of actually copying anything.
> Not good. I got caught up on this. To combat the mostly unwanted behavior, inside a function I have to reassign variables intended to be local to new variables.
Reassigning the objects to new variables would make no difference, as
you would still be dealing with the same objects. You would have to
actually copy the objects in order that changes to them would only be
local to the function. You would then be free to assign the copied
objects back to the original variable name, and then you would no
longer have any reference to the original objects within the function.
In other words, this will protect a list passed in from being mutated:
def foo(my_list):
my_list = list(my_list)
...
This will not:
def foo(my_list):
another_name_for_my_list = my_list
...
> A pain. Can anyone offer ONE reason why Python was designed that way?
How about because the overhead of copying every object passed into
every function would be inefficient?
What Python does here is not all that different from how .NET
reference types are passed by default. The call semantics of these
two examples are basically the same:
# Python:
def foo(index, my_list):
my_list[index] = 42
/* C Sharp */
void foo(int index, int[] my_list)
{
my_list[index] = 42;
}
In both cases, reassigning index would have no effect outside the
function. In C#, it's because the argument is passed by value; in
Python, it's because the assignment merely binds a different object to
the name. In both cases, reassigning my_list would have no effect
outside the function, for the same reasons.
In both cases, modifying index without reassigning it would still have
no effect outside the function. In C#, this is because int is a value
type; in Python, it's because ints are immutable in the first place.
Finally, in both cases, modifying the contents of my_list *does* have
a visible effect outside the function. In C#, it's because arrays are
a reference type; in Python, it's because the list object is shared by
the caller and callee.
So with that in mind, I have a hard time understanding why you might
be finding this strange and unexpected.
> Out of curiosity, does anyone have any idea why function declarations are preceded by the keyword "def" rather than something more intuitive like "function" or at least "func", perhaps?
Because that's what Guido picked when he started writing the language
in 1989, and it's too late to change it.
> Does anyone know what the benefit of writing the cryptic "elif" to mean "else if" is? Curiously, the default statement in an if/else chain is preceded by "else" and not "el".
Lots of languages use "elif" or "elsif" or "elseif" or some variation
thereof. Why does it matter?
[toc] | [prev] | [next] | [standalone]
Page 2 of 9 — ← Prev page 1 [2] 3 4 5 6 7 8 9 Next page →
Back to top | Article view | comp.lang.python
csiph-web