blob: 6ece155f2d1c2a5802ae985131e66da7c737561a [file] [log] [blame]
Guido van Rossuma7925f11994-01-26 10:20:16 +00001Subject: FAQ: Python -- an object-oriented language
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002Newsgroups: comp.lang.python,comp.answers,news.answers
3Followup-to: comp.lang.python
Guido van Rossuma7925f11994-01-26 10:20:16 +00004From: guido@cwi.nl (Guido van Rossum)
5Reply-to: guido@cwi.nl (Guido van Rossum)
6Approved: news-answers-request@MIT.Edu
7
8Archive-name: python-faq/part1
Guido van Rossumc50158e1994-05-31 09:18:50 +00009Version: 1.8
10Last-modified: 15 May 1994
Guido van Rossuma7925f11994-01-26 10:20:16 +000011
12This article contains answers to Frequently Asked Questions about
13Python (an object-oriented interpreted programming language -- see
14the answer to question 1.1 for a short overview).
15
16Copyright 1993, 1994 Guido van Rossum. Unchanged electronic
17redistribution of this FAQ is allowed. Printed redistribution only
18with permission of the author. No warranties.
19
20Author's address:
21 Guido van Rossum
22 CWI, dept. CST
23 Kruislaan 413
24 P.O. Box 94079
25 1090 GB Amsterdam
26 The Netherlands
27Email: guido@cwi.nl
28
29The latest version of this FAQ is available by anonymous ftp from
30ftp.cwi.nl [192.16.184.180] in the directory /pub/python, with
31filename python-FAQ. It will also be posted regularly to the
Guido van Rossum5333c5d1994-04-11 11:06:22 +000032newsgroups comp.answers and comp.lang.python.
Guido van Rossuma7925f11994-01-26 10:20:16 +000033
34Many FAQs, including this one, are available by anonymous ftp from
35rtfm.mit.edu [18.70.0.209] in the directory pub/usenet/news.answers.
36The name under which a FAQ is archived appears in the Archive-name line
37at the top of the article. This FAQ is archived as python-faq/part1.
38
39There's a mail server on that machine which will send you files from
40the archive by e-mail if you have no ftp access. You send a e-mail
41message to mail-server@rtfm.mit.edu containing the single word help in
42the message body to receive instructions.
43
44This FAQ is divided in the following chapters:
45
46 1. General information and availability
47 2. Python in the real world
48 3. Building Python
49 4. Programming in Python
50 5. Extending Python
51 6. Python's design
52 7. Using Python on non-UNIX platforms
53
54To find the start of a particular chapter, search for the chapter number
55followed by a dot and a space at the beginning of a line (e.g. to
56find chapter 4 in vi, type /^4\. /).
57
58Here's an overview of the questions per chapter:
59
60 1. General information and availability
61 1.1. Q. What is Python?
62 1.2. Q. Why is it called Python?
63 1.3. Q. How do I obtain a copy of the Python source?
64 1.4. Q. How do I get documentation on Python?
Guido van Rossumc50158e1994-05-31 09:18:50 +000065 1.5. Q. Are there other ftp sites that mirror the Python distribution?
66 1.6. Q. Is there a newsgroup or mailing list devoted to Python?
67 1.7. Q. Is there a book on Python, or will there be one out soon?
68 1.8. Q. Are there any published articles about Python that I can quote?
69 1.9. Q. How does the Python version numbering scheme work?
70 1.10. Q. Are there other ftp sites that carry Python related material?
Guido van Rossuma7925f11994-01-26 10:20:16 +000071
72 2. Python in the real world
73 2.1. Q. How many people are using Python?
74 2.2. Q. Have any significant projects been done in Python?
75 2.3. Q. Are there any commercial projects going on using Python?
Guido van Rossum95f61a71994-01-26 17:23:37 +000076 2.4. Q. How stable is Python?
77 2.5. Q. What new developments are expected for Python in the future?
Guido van Rossuma7925f11994-01-26 10:20:16 +000078
79 3. Building Python
Guido van Rossum91f60831994-02-15 15:52:27 +000080 3.1. Q. Is there a test set?
81 3.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +000082 operations, but when playing with floating point operations I cannot
83 find anything wrong with them.
Guido van Rossum91f60831994-02-15 15:52:27 +000084 3.3. Q. Link errors building Python with STDWIN on SGI IRIX.
85 3.4. Q. Link errors after rerunning the configure script.
86 3.5. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +000087 script (after the script name).
Guido van Rossum91f60831994-02-15 15:52:27 +000088 3.6. Q. When building on the SGI, make tries to run python to create
Guido van Rossum5333c5d1994-04-11 11:06:22 +000089 glmodule.c, but python hasn't been built or installed yet.
Guido van Rossum44b4cb11994-05-04 13:28:51 +000090 3.7. Q. Other trouble building Python 1.0.2 on platform X.
Guido van Rossuma7925f11994-01-26 10:20:16 +000091
92 4. Programming in Python
Guido van Rossum24349991994-02-02 14:12:45 +000093 4.1. Q. Is there a source code level debugger with breakpoints, step,
94 etc.?
95 4.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +000096 C and others in Python (e.g. through inheritance)? (Also phrased as:
97 Can I use a built-in type as base class?)
Guido van Rossum24349991994-02-02 14:12:45 +000098 4.3. Q. Is there a curses/termcap package for Python?
99 4.4. Q. Is there an equivalent to C's onexit() in Python?
100 4.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000101 nested function seemingly can't access the local variables of the
102 outer function. What is going on? How do I pass local data to a
103 nested function?
Guido van Rossum24349991994-02-02 14:12:45 +0000104 4.6. Q. How do I iterate over a sequence in reverse order?
105 4.7. Q. My program is too slow. How do I speed it up?
106 4.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +0000107 again (into the same Python process), the changes don't seem to take
108 place. What is going on?
Guido van Rossum24349991994-02-02 14:12:45 +0000109 4.9. Q. I have a module in which I want to execute some extra code when it
110 is run as a script. How do I find out whether I am running as a
111 script?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000112
113 5. Extending Python
114 5.1. Q. Can I create my own functions in C?
115 5.2. Q. Can I create my own functions in C++?
116
117 6. Python's design
118 6.1. Q. Why isn't there a generic copying operation for objects in
119 Python?
120 6.2. Q. Why isn't there a generic way to implement persistent objects
121 in Python? (Persistent == automatically saved to and restored from
122 disk.)
123 6.3. Q. Why isn't there a switch or case statement in Python?
Guido van Rossumc50158e1994-05-31 09:18:50 +0000124 6.4. Q. Why does Python use indentation for grouping of statements?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000125
126 7. Using Python on non-UNIX platforms
Guido van Rossum91f60831994-02-15 15:52:27 +0000127 7.1. Q. Is there a Mac version of Python?
128 7.2. Q. Is there a DOS version of Python?
129 7.3. Q. Is there a Windows version of Python?
130 7.4. Q. Is there a Windows NT version of Python?
131 7.5. Q. I have the DOS or Windows version but it appears to be only a
132 binary. Where's the library?
133 7.6. Q. Where's the documentation for the Mac or PC version?
134 7.7. Q. The Mac (PC) version doesn't seem to have any facilities for
135 creating or editing programs apart from entering it interactively, and
136 there seems to be no way to save code that was entered interactively.
137 How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000138
139To find a particular question, search for the question number followed
140by a dot, a space, and a Q at the beginning of a line (e.g. to find
141question 4.2 in vi, type /^4\.2\. Q/).
142
143
1441. General information and availability
145=======================================
146
1471.1. Q. What is Python?
148
149A. Python is an interpreted, interactive, object-oriented programming
150language. It incorporates modules, exceptions, dynamic typing, very
151high level dynamic data types, and classes. Python combines
152remarkable power with very clear syntax. It has interfaces to many
153system calls and libraries, as well as to various window systems, and
154is extensible in C or C++. It is also usable as an extension language
155for applications that need a programmable interface. Finally, Python
156is portable: it runs on many brands of UNIX, on the Mac, and on
157MS-DOS.
158
159To find out more, the best thing to do is to start reading the
160tutorial from the documentation set (see a few questions further
161down).
162
1631.2. Q. Why is it called Python?
164
165A. Apart from being a computer wizard, I'm also a fan of "Monty
166Python's Flying Circus" (a BBC comedy series from the seventies, in
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000167the -- unlikely -- case you didn't know). It occurred to me one day
168that I needed a name that was short, unique, and slightly mysterious.
169And I happened to be reading some scripts from the series at the
170time... So then I decided to call my language Python. But Python is
171not a joke. And don't you associate it with dangerous reptiles
172either!
Guido van Rossuma7925f11994-01-26 10:20:16 +0000173
1741.3. Q. How do I obtain a copy of the Python source?
175
176A. The latest Python source distribution is always available by
177anonymous ftp from ftp.cwi.nl [192.16.184.180] in the directory
Guido van Rossum44b4cb11994-05-04 13:28:51 +0000178/pub/python, with filename python<version>.tar.gz. (Old versions may
179have an extension of .Z, indicating use of "compress" compression.)
180It is a gzip'ed tar file containing the complete C source, LaTeX
181documentation, Python library modules, example programs, and several
182useful pieces of freely distributable software. This will compile and
183run out of the box on most UNIX platforms. At the time of writing,
184<version> is 1.0.2. (See section 7 for non-UNIX information.)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000185
1861.4. Q. How do I get documentation on Python?
187
188A. The latest Python documentation set is always available by
189anonymous ftp from ftp.cwi.nl [192.16.184.180] in the directory
Guido van Rossum44b4cb11994-05-04 13:28:51 +0000190/pub/python, with filename pythondoc-ps<version>.tar.gz. It is a
191gzip'ed tar file containing PostScript files of the reference manual,
192the library manual, and the tutorial. At the time of writing
193<version> is 1.0.2. Note that the library manual is the most
194important one of the set, as much of Python's power stems from the
195standard or built-in types, functions and modules, all of which are
196described here. PostScript for a high-level description of Python is
197in the file nluug-paper.ps.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000198
Guido van Rossumc50158e1994-05-31 09:18:50 +00001991.5. Q. Are there other ftp sites that mirror the Python distribution?
200
201A. The following sites keep mirrors of the Python distribution:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000202
203Site IP address Directory
204
205gatekeeper.dec.com 16.1.0.2 /pub/plan/python/cwi
206ftp.uu.net 192.48.96.9 /languages/python
207ftp.wustl.edu 128.252.135.4 /graphics/graphics/sgi-stuff/python
Guido van Rossumc50158e1994-05-31 09:18:50 +0000208ftp.funet.fi 128.214.6.100 /pub/languages/python
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000209ftp.fu-berlin.de 130.133.4.50 /pub/unix/languages/python (*python* only)
Guido van Rossumc50158e1994-05-31 09:18:50 +0000210ftp.sunet.se 130.238.127.3 /pub/lang/python
Guido van Rossuma7925f11994-01-26 10:20:16 +0000211
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000212Or try archie on e.g. python1.0 to locate the nearest copy of that
213version...
Guido van Rossuma7925f11994-01-26 10:20:16 +0000214
Guido van Rossumc50158e1994-05-31 09:18:50 +00002151.6. Q. Is there a newsgroup or mailing list devoted to Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000216
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000217A. There is a newsgroup, comp.lang.python, and a mailing list. The
218newsgroup and mailing list are gatewayed into each other -- if you can
219read news it is not necessary to subscribe to the mailing list. Send
220e-mail to python-list-request@cwi.nl to (un)subscribe to the mailing
221list.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000222
Guido van Rossumc50158e1994-05-31 09:18:50 +00002231.7. Q. Is there a book on Python, or will there be one out soon?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000224
225A. Unfortunately, not yet. I would like to write one but my
226obligations at CWI include too much other work to make much progress
227on it. Several parties have expressed interest in sponsoring or
228helping the production of a book or reference manual, but so far there
229are no firm plans. If you volunteer help, by all means drop me a
230note!
231
Guido van Rossumc50158e1994-05-31 09:18:50 +00002321.8. Q. Are there any published articles about Python that I can quote?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000233
234A. So far the only refereed and published article that describes
235Python in some detail is:
236
237 Guido van Rossum and Jelke de Boer, "Interactively Testing Remote
238 Servers Using the Python Programming Language", CWI Quarterly, Volume
239 4, Issue 4 (December 1991), Amsterdam, pp 283-303.
240
241LaTeX source for this paper is available as part of the Python source
242distribution.
243
244A more recent high-level description of Python is:
245
246 Guido van Rossum, "An Introduction to Python for UNIX/C
247 Programmers", in the proceedings of the NLUUG najaarsconferentie
248 1993 (dutch UNIX users group meeting november 1993).
249
250PostScript for this paper and for the slides used for the accompanying
251presentation can be found in the ftp directory mentioned a few
252questions earlier, with filenames nluug-paper.ps and nluug-slides.ps,
253respectively.
254
Guido van Rossumc50158e1994-05-31 09:18:50 +00002551.9. Q. How does the Python version numbering scheme work?
Guido van Rossum95f61a71994-01-26 17:23:37 +0000256
257A. Python versions are numbered A.B.C. A is the major version number
258-- it is only incremented for major changes in functionality or source
259structure. B is the minor version number, incremented for less
260earth-shattering changes to a release. C is the patchlevel -- it is
261incremented for each new release. Note that in the past, patches have
262added significant changes; in fact the changeover from 0.9.9 to 1.0.0
263was the first time that either A or B changed!
264
Guido van Rossumc50158e1994-05-31 09:18:50 +00002651.10. Q. Are there other ftp sites that carry Python related material?
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000266
267A. An interesting ftp site for Python users is ftp.markv.com
268(192.122.251.1); the directory pub/python contains a growing
269collection of interesting Python scripts. To submit a script for
270inclusion, place it together with a readme file (with extension
271.readme) in the publicly writable directory /incoming/python. This
272service is maintained by Lance Ellinghouse <lance@markv.com>.
273
274
Guido van Rossuma7925f11994-01-26 10:20:16 +0000275
2762. Python in the real world
277===========================
278
2792.1. Q. How many people are using Python?
280
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000281A. I don't know, but the maximum number of simultaneous subscriptions
282to the Python mailing list before it was gatewayed into the newsgroup
283was about 180 (several of which were local redistribution lists). I
284believe that many active Python users don't bother to subscribe to the
285list, and now that there's a newsgroup the mailing list subscription
286is even less meaningful.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000287
2882.2. Q. Have any significant projects been done in Python?
289
290A. Here at CWI (the home of Python), we have written a 20,000 line
291authoring environment for transportable hypermedia presentations, a
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002925,000 line multimedia teleconferencing tool, as well as many many
293smaller programs.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000294
295The University of Virginia uses Python to control a virtual reality
296engine. Contact: Matt Conway <conway@virginia.edu>.
297
298See also the next question.
299
3002.3. Q. Are there any commercial projects going on using Python?
301
302A. Several companies have revealed to me that they are planning or
303considering to use Python in a future product. The furthest is
304Sunrise Software, who already have a product out using Python -- they
305use Python for a GUI management application and an SNMP network
306manangement application. Contact: <info@sunrise.com>.
307
308Individuals at many other companies are using Python for
309internal development (witness their contributions to the Python
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000310mailing list or newsgroup).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000311
312Python has also been elected as an extension language by MADE, a
313consortium supported by the European Committee's ESPRIT program and
314consisting of Bull, CWI and some other European companies. Contact:
315Ivan Herman <ivan@cwi.nl>.
316
Guido van Rossum95f61a71994-01-26 17:23:37 +00003172.4. Q. How stable is Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000318
Guido van Rossum44b4cb11994-05-04 13:28:51 +0000319A. Very stable. While the current version number (1.0.2) would
Guido van Rossuma7925f11994-01-26 10:20:16 +0000320suggest it is in the early stages of development, in fact new, stable
Guido van Rossum95f61a71994-01-26 17:23:37 +0000321releases (numbered 0.9.x) have been coming out roughly every 3 to 6
322months for the past four years.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000323
Guido van Rossum95f61a71994-01-26 17:23:37 +00003242.5. Q. What new developments are expected for Python in the future?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000325
Guido van Rossum95f61a71994-01-26 17:23:37 +0000326A. Without warranty that any of this will actually be realized: I am
Guido van Rossuma7925f11994-01-26 10:20:16 +0000327currently thinking about mechanisms for built-in on-line help and a
Guido van Rossum99bf2501994-01-26 17:30:41 +0000328switch/case statement. There have been some discussions on
329hierarchical module names which might solve the problem of the
330development of large packages. A pthreads interface has been
331contributed which I would like to merge into the latest release. The
332X interface needs improving. There are also some people
333(independently) working on a windowing interface based on STDWIN but
334with the power and ease of use of the average modern widget set. I
335still hope to get some help in producing a Windows version. It would
336be nice if there were a window-based class browser (Someone at CWI has
337contributed one using Motif but it needs some work). Also: improved
338support for embedding Python in other applications, e.g. by renaming
339most global symbols to have a "Py" prefix and providing more
340documentation and threading support.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000341
342
3433. Building Python
344==================
345
Guido van Rossum91f60831994-02-15 15:52:27 +00003463.1. Q. Is there a test set?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000347
348A. Yes, simply do "import testall" (or "import autotest" if you aren't
349interested in the output). The standard modules whose name begins
350with "test" together comprise the test. The test set doesn't test
351*all* features of Python but it goes a long way to confirm that a new
352port is actually working. The Makefile contains an entry "make test"
353which runs the autotest module.
354
Guido van Rossum91f60831994-02-15 15:52:27 +00003553.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +0000356operations, but when playing with floating point operations I cannot
357find anything wrong with them.
358
359A. The test set makes occasional unwarranted assumptions about the
360semantics of C floating point operations. Until someone donates a
361better floating point test set, you will have to comment out the
362offending floating point tests and execute similar tests manually.
363
Guido van Rossum91f60831994-02-15 15:52:27 +00003643.3. Q. Link errors building Python with STDWIN on SGI IRIX.
Guido van Rossum24349991994-02-02 14:12:45 +0000365
366A. Rebuild STDWIN, specifying "CC=cc -cckr" in the Makefile.
367
Guido van Rossum91f60831994-02-15 15:52:27 +00003683.4. Q. Link errors after rerunning the configure script.
Guido van Rossum24349991994-02-02 14:12:45 +0000369
370A. It is generally necessary to run "make clean" after a configuration
371change.
372
Guido van Rossum91f60831994-02-15 15:52:27 +00003733.5. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +0000374script (after the script name).
375
376A. You are probably linking with GNU getopt, e.g. through -liberty.
377Don't. (If you are using this because you link with -lreadline, use
378the readline distributed with Python instead.)
379
Guido van Rossum91f60831994-02-15 15:52:27 +00003803.6. Q. When building on the SGI, make tries to run python to create
Guido van Rossum24349991994-02-02 14:12:45 +0000381glmodule.c, but python hasn't been built or installed yet.
382
383A. Comment out the line mentioning glmodule.c in Setup and build a
384python without gl first; install it or make sure it is in your $PATH,
385then edit the Setup file again to turn on the gl module, and make
386again. You don't need to do "make clean"; you do need to run "make
387Makefile" in the Modules subdirectory (or just run "make" at the
388toplevel).
389
Guido van Rossum44b4cb11994-05-04 13:28:51 +00003903.7. Q. Other trouble building Python 1.0.2 on platform X.
Guido van Rossum95f61a71994-01-26 17:23:37 +0000391
392A. Please email the details to <guido@cwi.nl> and I'll look into it.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000393
394
3954. Programming in Python
396========================
397
Guido van Rossum24349991994-02-02 14:12:45 +00003984.1. Q. Is there a source code level debugger with breakpoints, step,
399etc.?
400
401A. Yes. Check out module pdb; pdb.help() prints the documentation (or
402you can read it as Lib/pdb.doc). If you use the STDWIN option,
403there's also a windowing interface, wdb. You can write your own
404debugger by using the code for pdb or wdb as an example.
405
4064.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000407C and others in Python (e.g. through inheritance)? (Also phrased as:
408Can I use a built-in type as base class?)
409
410A. No, but you can easily create a Python class which serves as a
411wrapper around a built-in object, e.g. (for dictionaries):
412
413 # A user-defined class behaving almost identical
414 # to a built-in dictionary.
415 class UserDict:
416 def __init__(self): self.data = {}
417 def __repr__(self): return repr(self.data)
418 def __cmp__(self, dict):
419 if type(dict) == type(self.data):
420 return cmp(self.data, dict)
421 else:
422 return cmp(self.data, dict.data)
423 def __len__(self): return len(self.data)
424 def __getitem__(self, key): return self.data[key]
425 def __setitem__(self, key, item): self.data[key] = item
426 def __delitem__(self, key): del self.data[key]
427 def keys(self): return self.data.keys()
428 def items(self): return self.data.items()
429 def values(self): return self.data.values()
430 def has_key(self, key): return self.data.has_key(key)
431
Guido van Rossum24349991994-02-02 14:12:45 +00004324.3. Q. Is there a curses/termcap package for Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000433
434A. No, but you can use the "alfa" (== character cell) version of
435STDWIN. (STDWIN == Standard Windows, a portable windowing system
Guido van Rossum91f60831994-02-15 15:52:27 +0000436interface by the same author, URL: ftp://ftp.cwi.nl/pub/stdwin.)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000437This will also prepare your program for porting to windowing
438environments such as X11 or the Macintosh.
439
Guido van Rossum24349991994-02-02 14:12:45 +00004404.4. Q. Is there an equivalent to C's onexit() in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000441
442A. Yes, if you import sys and assign a function to sys.exitfunc, it
443will be called when your program exits, is killed by an unhandled
444exception, or (on UNIX) receives a SIGHUP or SIGTERM signal.
445
Guido van Rossum24349991994-02-02 14:12:45 +00004464.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000447nested function seemingly can't access the local variables of the
448outer function. What is going on? How do I pass local data to a
449nested function?
450
451A. Python does not have arbitrarily nested scopes. When you need to
452create a function that needs to access some data which you have
453available locally, create a new class to hold the data and return a
454method of an instance of that class, e.g.:
455
456 class MultiplierClass:
457 def __init__(self, factor):
458 self.factor = factor
459 def multiplier(self, argument):
460 return argument * self.factor
461
462 def generate_multiplier(factor):
463 return MultiplierClass(factor).multiplier
464
465 twice = generate_multiplier(2)
466 print twice(10)
467 # Output: 20
468
Guido van Rossum24349991994-02-02 14:12:45 +00004694.6. Q. How do I iterate over a sequence in reverse order?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000470
471A. If it is a list, the fastest solution is
472
473 list.reverse()
474 try:
475 for x in list:
476 "do something with x"
477 finally:
478 list.reverse()
479
480This has the disadvantage that while you are in the loop, the list
481is temporarily reversed. If you don't like this, you can make a copy.
482This appears expensive but is actually faster than other solutions:
483
484 rev = list[:]
485 rev.reverse()
486 for x in rev:
487 <do something with x>
488
489If it isn't a list, a more general but slower solution is:
490
491 i = len(list)
492 while i > 0:
493 i = i-1
494 x = list[i]
495 <do something with x>
496
497A more elegant solution, is to define a class which acts as a sequence
498and yields the elements in reverse order (solution due to Steve
499Majewski):
500
501 class Rev:
502 def __init__(self, seq):
503 self.forw = seq
504 def __len__(self):
505 return len(self.forw)
506 def __getitem__(self, i):
507 return self.forw[-(i + 1)]
508
509You can now simply write:
510
511 for x in Rev(list):
512 <do something with x>
513
514Unfortunately, this solution is slowest of all, due the the method
515call overhead...
516
Guido van Rossum24349991994-02-02 14:12:45 +00005174.7. Q. My program is too slow. How do I speed it up?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000518
519A. That's a tough one, in general. There are many tricks to speed up
520Python code; I would consider rewriting parts in C only as a last
521resort. One thing to notice is that function and (especially) method
522calls are rather expensive; if you have designed a purely OO interface
523with lots of tiny functions that don't do much more than get or set an
524instance variable or call another method, you may consider using a
525more direct way, e.g. directly accessing instance variables. Also see
526the standard module "profile" (described in the file
527"python/lib/profile.doc") which makes it possible to find out where
528your program is spending most of its time (if you have some patience
529-- the profiling itself can slow your program down by an order of
530magnitude).
531
Guido van Rossum24349991994-02-02 14:12:45 +00005324.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +0000533again (into the same Python process), the changes don't seem to take
534place. What is going on?
535
536A. For efficiency reasons, Python only reads the module file on the
537first time a module is imported (otherwise a program consisting of
538many modules, each of which imports the same basic module, would read
539the basic module over and over again). To force a changed module
540being read again, do this:
541
542 import modname
543 reload(modname)
544
545Warning: this technique is not 100% fool-proof. In particular,
546modules containing statements like
547
548 from modname import some_objects
549
550will continue to work with the old version of the objects imported
551thus.
552
Guido van Rossum24349991994-02-02 14:12:45 +00005534.9. Q. I have a module in which I want to execute some extra code when it
554is run as a script. How do I find out whether I am running as a
555script?
556
557A. A module can find out its own module name by alooking at the
558(predefined) global variable __name__. If this has the value
559'__main__' you are running as a script. E.g. if you put the following
560on the last line of your module, main() is called only when your
561module is running as a script:
562
563 if __name__ == '__main__': main()
564
Guido van Rossuma7925f11994-01-26 10:20:16 +0000565
5665. Extending Python
567===================
568
5695.1. Q. Can I create my own functions in C?
570
571A. Yes, you can create built-in modules containing functions,
Guido van Rossum24349991994-02-02 14:12:45 +0000572variables, exceptions and even new types in C. This is explained in
573the document "Extending and Embedding the Python Interpreter" (the
574LaTeX file Doc/ext.tex). Also read the chapter on dynamic loading.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000575
5765.2. Q. Can I create my own functions in C++?
577
578A. Yes, using the C-compatibility features found in C++. Basically
579you place extern "C" { ... } around the Python include files and put
580extern "C" before each function that is going to be called by the
581Python interpreter. Global or static C++ objects with constructors
582are probably not a good idea.
583
584
5856. Python's design
586==================
587
5886.1. Q. Why isn't there a generic copying operation for objects in
589Python?
590
591A. Hmm. Maybe there should be one, but it's difficult to assign a
592useful meaning to copying of open files, sockets and windows, or
593recursive data structures. As long as you design all your classes
594yourself you are of course free to define a standard base class that
595defines an overridable copying operation for all the objects you care
596about. (One practical point: it would have to be a built-in function,
597not a standard method name, since not all built-in object types have
598methods; e.g. strings, integers and tuples don't.)
599
6006.2. Q. Why isn't there a generic way to implement persistent objects
601in Python? (Persistent == automatically saved to and restored from
602disk.)
603
604A. Hmm, hmm. Basically for the same reasons as why there is no
605generic copying operation.
606
6076.3. Q. Why isn't there a switch or case statement in Python?
608
609A. You can do this easily enough with a sequence of
610if... elif... elif... else. There have been some proposals for switch
611statement syntax, but there is no concensus (yet) on whether and how
612to do range tests.
613
Guido van Rossumc50158e1994-05-31 09:18:50 +00006146.4. Q. Why does Python use indentation for grouping of statements?
615
616A. Basically I believe that using indentation for grouping is
617extremely elegant and contributes a lot to the clarity of the average
618Python program. Most people learn to love this feature after a while.
619Some arguments for it:
620
621- Since there are no begin/end brackets there cannot be a disagreement
622between grouping perceived by the parser and the human reader. I
623remember long ago seeing a C fragment like this:
624
625 if (x <= y)
626 x++;
627 y--;
628 z++;
629
630and staring a long time at it wondering why y was being decremented
631even for x > y... (And I wasn't a C newbie then either.)
632
633- Since there are no begin/end brackets there can be no conflicting
634coding styles. In C there are loads of different ways to place the
635braces (including the choice whether to place braces around single
636statements in certain cases, for consistency). If you're used to
637reading (and writing) code that uses one style, you will feel at least
638slightly uneasy when reading (or being required to write) another
639style.
640
641- Many coding styles place begin/end brackets on a line by themself.
642This makes programs considerably longer and wastes valuable screen
643space, making it harder to get a good overview over a program.
644Ideally, a function should fit on one basic tty screen (say, 20
645lines). 20 lines of Python are worth a LOT more than 20 lines of C.
646This is not solely due to the lack of begin/end brackets (the lack of
647declarations also helps, and the powerful operations of course), but
648it certainly helps!
649
Guido van Rossuma7925f11994-01-26 10:20:16 +0000650
6517. Using Python on non-UNIX platforms
652=====================================
653
Guido van Rossum91f60831994-02-15 15:52:27 +00006547.1. Q. Is there a Mac version of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000655
Guido van Rossum91f60831994-02-15 15:52:27 +0000656A. Yes. It is on most ftp sites carrying Python as python.sea.hqx --
657this is a self-extracting archive containing the application binary as
658well as the Lib modules.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000659
Guido van Rossum91f60831994-02-15 15:52:27 +00006607.2. Q. Is there a DOS version of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000661
Guido van Rossum91f60831994-02-15 15:52:27 +0000662A. Yes. More than one, actually: 16python.exe runs in standard DOS
663mode on 186 CPUs or higher; 32python.exe uses a DOS extender and only
664runs on a 386 or higher CPUs. Although 16python.exe does not pass the
665test set because test_grammar is too big for the parser, it actually
666has about 270 kbyte of allocatable heap space, which is sufficient for
667fairly large programs. 32python.exe is distributed as a tar file
668containing the required DOS extended and 387 emulator. Both are on
669most ftp sites carrying Python.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000670
Guido van Rossum91f60831994-02-15 15:52:27 +00006717.3. Q. Is there a Windows version of Python?
672
673A. Yes. Use qwpython.exe. The only problem with it: ^C
674unconditionally kills the entire program -- it does not raise
675KeyboardInterrupt. You can also run 16python.exe or 32python.exe in a
676"DOS box", but qwpython.exe appears to be slightly faster.
677
6787.4. Q. Is there a Windows NT version of Python?
679
680A. Yes. Use ntpython.exe. This is for Intel CPUs. If you want a
681Windows user interface, use qwpython.exe.
682
6837.5. Q. I have the DOS or Windows version but it appears to be only a
684binary. Where's the library?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000685
686A. You still need to copy the files from the distribution directory
Guido van Rossum91f60831994-02-15 15:52:27 +0000687"python/Lib" to your system. If you don't have the full distribution,
Guido van Rossum44b4cb11994-05-04 13:28:51 +0000688you can get the file pythonlib1.0.2.tar.gz from most ftp sites carrying
Guido van Rossum91f60831994-02-15 15:52:27 +0000689Python; this is a subset of the distribution containing just those
690file.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000691
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000692Once you have installed the library, you need to point sys.path to it.
693Assuming the library is in C:\misc\python\lib, the following commands
694will point your Python interpreter to it (note the doubled backslashes
695-- you can also use single forward slashes instead):
696
697 >>> import sys
698 >>> sys.path.insert(0, 'C:\\misc\\python\\lib')
699 >>>
700
701For a more permanent effect, set the environment variable PYTHONPATH,
702as follows (talking to a DOS prompt):
703
704 C> SET PYTHONPATH=C:\misc\python\lib
705
Guido van Rossum91f60831994-02-15 15:52:27 +00007067.6. Q. Where's the documentation for the Mac or PC version?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000707
708A. There isn't any. The documentation for the Unix version also
Guido van Rossum91f60831994-02-15 15:52:27 +0000709applies to the Mac and PC versions. Where applicable, differences
Guido van Rossuma7925f11994-01-26 10:20:16 +0000710are indicated in the text.
711
Guido van Rossum91f60831994-02-15 15:52:27 +00007127.7. Q. The Mac (PC) version doesn't seem to have any facilities for
713creating or editing programs apart from entering it interactively, and
714there seems to be no way to save code that was entered interactively.
715How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000716
Guido van Rossum91f60831994-02-15 15:52:27 +0000717A. Use an external editor. On the Mac, I am quite happy with the Desk
718Accessory called Sigma Edit; this doesn't require Multifinder or
719System 7. I work like this: start the interpreter; edit a module file
720using Sigma Edit; import and test it in the interpreter; edit again in
721Sigma Edit; then use the built-in function reload() to re-read the
722imported module; etc.
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000723
724Regarding the same question for the PC, Kurt Wm. Hemr writes: "While
725anyone with a pulse could certainly figure out how to do the same on
726MS-Windows, I would recommend the NotGNU Emacs clone for MS-Windows.
727Not only can you easily resave and "reload()" from Python after making
728changes, but since WinNot auto-copies to the clipboard any text you
729select, you can simply select the entire procedure (function) which
730you changed in WinNot, switch to QWPython, and shift-ins to reenter
731the changed program unit."