blob: 57c1737cd87995b26df655d08f443e2a8382a9f0 [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 Rossum81300541996-09-06 16:37:56 +00004From: guido@cnri.reston.va.us (Guido van Rossum)
Guido van Rossum7be34a81995-05-31 15:17:12 +00005Reply-to: guido@cnri.reston.va.us (Guido van Rossum)
Guido van Rossumc458e941996-09-11 15:43:13 +00006Expires: Sun, 1 Dec 1996 00:00:00 GMT
7Supersedes: <DxJ3t1.CJv@cwi.nl>
Guido van Rossuma7925f11994-01-26 10:20:16 +00008Approved: news-answers-request@MIT.Edu
9
10Archive-name: python-faq/part1
Guido van Rossum81300541996-09-06 16:37:56 +000011Submitted-by: Guido van Rossum <guido@cnri.reston.va.us>
Guido van Rossumc458e941996-09-11 15:43:13 +000012Version: $Revision$
Guido van Rossum9c5dc291996-10-13 15:48:56 +000013Last-modified: $Date$
Guido van Rossuma7925f11994-01-26 10:20:16 +000014
15This article contains answers to Frequently Asked Questions about
16Python (an object-oriented interpreted programming language -- see
17the answer to question 1.1 for a short overview).
18
Guido van Rossumc458e941996-09-11 15:43:13 +000019Copyright 1993-1996 Guido van Rossum. Unchanged electronic
Guido van Rossuma7925f11994-01-26 10:20:16 +000020redistribution of this FAQ is allowed. Printed redistribution only
21with permission of the author. No warranties.
22
23Author's address:
Guido van Rossume7d92d51995-10-11 18:06:54 +000024 Guido van Rossum
25 C.N.R.I.
26 1895 Preston White Drive
Guido van Rossum81300541996-09-06 16:37:56 +000027 Reston, VA 20191
Guido van Rossume7d92d51995-10-11 18:06:54 +000028 U.S.A.
Guido van Rossum81300541996-09-06 16:37:56 +000029Email: <guido@python.org>, <guido@cnri.reston.va.us>
Guido van Rossuma7925f11994-01-26 10:20:16 +000030
31The latest version of this FAQ is available by anonymous ftp from
Guido van Rossumca318ec1996-06-26 19:50:09 +000032<URL:ftp://ftp.python.org/pub/python/doc/FAQ>. It will also be posted
Guido van Rossuma6c707c1995-01-02 17:32:28 +000033regularly to the newsgroups comp.answers <URL:news:comp.answers> and
34comp.lang.python <URL:news:comp.lang.python>.
Guido van Rossuma7925f11994-01-26 10:20:16 +000035
Guido van Rossuma6c707c1995-01-02 17:32:28 +000036Many FAQs, including this one, are available by anonymous ftp
37<URL:ftp://rtfm.mit.edu/pub/usenet/news.answers/>. The name under
38which a FAQ is archived appears in the Archive-name line at the top of
39the article. This FAQ is archived as python-faq/part1
40<URL:ftp://rtfm.mit.edu/pub/usenet/news.answers/python-faq/part1>.
Guido van Rossuma7925f11994-01-26 10:20:16 +000041
42There's a mail server on that machine which will send you files from
43the archive by e-mail if you have no ftp access. You send a e-mail
Guido van Rossuma6c707c1995-01-02 17:32:28 +000044message to <mail-server@rtfm.mit.edu> containing the single word help
45in the message body to receive instructions.
Guido van Rossuma7925f11994-01-26 10:20:16 +000046
47This FAQ is divided in the following chapters:
48
49 1. General information and availability
50 2. Python in the real world
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000051 3. Building Python and Other Known Bugs
Guido van Rossuma7925f11994-01-26 10:20:16 +000052 4. Programming in Python
53 5. Extending Python
54 6. Python's design
55 7. Using Python on non-UNIX platforms
56
57To find the start of a particular chapter, search for the chapter number
58followed by a dot and a space at the beginning of a line (e.g. to
59find chapter 4 in vi, type /^4\. /).
60
61Here's an overview of the questions per chapter:
62
63 1. General information and availability
64 1.1. Q. What is Python?
65 1.2. Q. Why is it called Python?
66 1.3. Q. How do I obtain a copy of the Python source?
67 1.4. Q. How do I get documentation on Python?
Guido van Rossumc50158e1994-05-31 09:18:50 +000068 1.5. Q. Are there other ftp sites that mirror the Python distribution?
69 1.6. Q. Is there a newsgroup or mailing list devoted to Python?
Guido van Rossuma6c707c1995-01-02 17:32:28 +000070 1.7. Q. Is there a WWW page devoted to Python?
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +000071 1.8. Q. Is the Python documentation available on the WWW?
72 1.9. Q. Is there a book on Python, or will there be one out soon?
73 1.10. Q. Are there any published articles about Python that I can quote?
74 1.11. Q. Are there short introductory papers or talks on Python?
75 1.12. Q. How does the Python version numbering scheme work?
76 1.13. Q. How do I get a beta test version of Python?
Guido van Rossum05151e01995-09-28 13:24:46 +000077 1.14. Q. Are there copyright restrictions on the use of Python?
78 1.15. Q. Why was Python created in the first place?
Guido van Rossuma7925f11994-01-26 10:20:16 +000079
80 2. Python in the real world
81 2.1. Q. How many people are using Python?
82 2.2. Q. Have any significant projects been done in Python?
83 2.3. Q. Are there any commercial projects going on using Python?
Guido van Rossum95f61a71994-01-26 17:23:37 +000084 2.4. Q. How stable is Python?
Guido van Rossum8727df41996-09-09 15:16:39 +000085 2.5. Q. What new developments are expected for Python in the future?
86 2.6. Q. Is it reasonable to propose incompatible changes to Python?
87 2.7. Q. What is the future of Python?
88 2.8. Q. What is the PSA, anyway?
89 2.9. Q. How do I join the PSA?
90 2.10. Q. What are the benefits of joining the PSA?
Guido van Rossuma7925f11994-01-26 10:20:16 +000091
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000092 3. Building Python and Other Known Bugs
Guido van Rossum91f60831994-02-15 15:52:27 +000093 3.1. Q. Is there a test set?
94 3.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +000095 operations, but when playing with floating point operations I cannot
96 find anything wrong with them.
Guido van Rossum7be34a81995-05-31 15:17:12 +000097 3.3. Q. Link errors after rerunning the configure script.
98 3.4. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +000099 script (after the script name).
Guido van Rossum7be34a81995-05-31 15:17:12 +0000100 3.5. Q. When building on the SGI, make tries to run python to create
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000101 glmodule.c, but python hasn't been built or installed yet.
Guido van Rossum8727df41996-09-09 15:16:39 +0000102 3.6. Q. I use VPATH but some targets are built in the source directory.
103 3.7. Q. Trouble building or linking with the GNU readline library.
104 3.8. Q. Trouble with socket I/O on older Linux 1.x versions.
105 3.9. Q. Trouble with prototypes on Ultrix.
Guido van Rossum8a913021996-10-08 17:18:30 +0000106 3.10. Q. Other trouble building Python on platform X.
107 3.11. Q. How to configure dynamic loading on Linux.
Guido van Rossum9c5dc291996-10-13 15:48:56 +0000108 3.12. Q: I can't get shared modules to work on Linux 2.0 (Slackware96)?
Guido van Rossumcaa83c41996-11-13 15:06:24 +0000109 3.13. Q: Trouble when making modules shared on Linux.
110 3.14. Q. How to use threads on Linux.
111 3.15. Q. Errors when linking with a shared library containing C++ code.
112 3.16. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
113 3.17. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
114 3.18. Q. Link errors for Tcl/Tk symbols when linking with Tcl/Tk.
115 3.19. Q. I configured and built Python for Tcl/Tk but "import Tkinter"
Guido van Rossum8727df41996-09-09 15:16:39 +0000116 fails.
Guido van Rossumcaa83c41996-11-13 15:06:24 +0000117 3.20. Q. Tk doesn't work right on DEC Alpha.
118 3.21. Q. Several common system calls are missing from the posix module.
119 3.22. Q. ImportError: No module named string, on MS Windows.
120 3.23. Q. Core dump on SGI when using the gl module.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000121
122 4. Programming in Python
Guido van Rossum24349991994-02-02 14:12:45 +0000123 4.1. Q. Is there a source code level debugger with breakpoints, step,
124 etc.?
125 4.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000126 C and others in Python (e.g. through inheritance)? (Also phrased as:
127 Can I use a built-in type as base class?)
Guido van Rossum24349991994-02-02 14:12:45 +0000128 4.3. Q. Is there a curses/termcap package for Python?
129 4.4. Q. Is there an equivalent to C's onexit() in Python?
130 4.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000131 nested function seemingly can't access the local variables of the
132 outer function. What is going on? How do I pass local data to a
133 nested function?
Guido van Rossum24349991994-02-02 14:12:45 +0000134 4.6. Q. How do I iterate over a sequence in reverse order?
135 4.7. Q. My program is too slow. How do I speed it up?
136 4.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +0000137 again (into the same Python process), the changes don't seem to take
138 place. What is going on?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000139 4.9. Q. How do I find the current module name?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000140 4.10. Q. I have a module in which I want to execute some extra code
141 when it is run as a script. How do I find out whether I am running as
142 a script?
143 4.11. Q. I try to run a program from the Demo directory but it fails
144 with ImportError: No module named ...; what gives?
Guido van Rossum061f1821994-10-06 16:03:45 +0000145 4.12. Q. I have successfully built Python with STDWIN but it can't
146 find some modules (e.g. stdwinevents).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000147 4.13. Q. What GUI toolkits exist for Python?
Guido van Rossum061f1821994-10-06 16:03:45 +0000148 4.14. Q. Are there any interfaces to database packages in Python?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000149 4.15. Q. Is it possible to write obfuscated one-liners in Python?
150 4.16. Q. Is there an equivalent of C's "?:" ternary operator?
151 4.17. Q. My class defines __del__ but it is not called when I delete the
152 object.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000153 4.18. Q. How do I change the shell environment for programs called
154 using os.popen() or os.system()? Changing os.environ doesn't work.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000155 4.19. Q. What is a class?
156 4.20. Q. What is a method?
157 4.21. Q. What is self?
158 4.22. Q. What is a unbound method?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000159 4.23. Q. How do I call a method defined in a base class from a derived
160 class that overrides it?
161 4.24. Q. How do I call a method from a base class without using the
162 name of the base class?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000163 4.25. Q. How can I organize my code to make it easier to change the base
164 class?
165 4.26. Q. How can I find the methods or attributes of an object?
Guido van Rossum061f1821994-10-06 16:03:45 +0000166 4.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
167 4.28. Q. How can I create a stand-alone binary from a Python script?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000168 4.29. Q. What WWW tools are there for Python?
169 4.30. Q. How do I run a subprocess with pipes connected to both input
Guido van Rossum796b2591995-01-20 23:05:52 +0000170 and output?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000171 4.31. Q. How do I call a function if I have the arguments in a tuple?
172 4.32. Q. How do I enable font-lock-mode for Python in Emacs?
173 4.33. Q. Is there an inverse to the format operator (a la C's scanf())?
Guido van Rossumca318ec1996-06-26 19:50:09 +0000174 4.34. Q. Can I have Tk events handled while waiting for I/O?
175 4.35. Q. How do I write a function with output parameters (call by reference)?
Guido van Rossum0d20cfa1996-07-30 18:53:05 +0000176 4.36. Q. Please explain the rules for local and global variables in Python.
177 4.37. Q. How can I have modules that mutually import each other?
Guido van Rossum8727df41996-09-09 15:16:39 +0000178 4.38. Q. How do I copy an object in Python?
179 4.39. Q. How to implement persistent objects in Python? (Persistent ==
180 automatically saved to and restored from disk.)
Guido van Rossuma4e41a81996-10-22 03:00:43 +0000181 4.40. Q. I try to use __spam and I get an error about _SomeClassName__spam.
Guido van Rossumc59120b1996-11-14 14:10:11 +0000182 4.41. Q. How do I delete a file? And other file questions.
Guido van Rossum4a908be1997-03-16 18:34:00 +0000183 4.42. Q. How to modify urllib or httplib to support HTTP/1.1?
Guido van Rossum14d1c721997-03-19 14:43:28 +0000184 4.43. Q. Unexplicable syntax errors in compile() or exec.
Guido van Rossum31ef35b1997-03-25 18:25:20 +0000185 4.44. Q. How do I convert a string to a number?
186 4.45. Q. How do I convert a number to a string?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000187
188 5. Extending Python
189 5.1. Q. Can I create my own functions in C?
190 5.2. Q. Can I create my own functions in C++?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000191 5.3. Q. How can I execute arbitrary Python statements from C?
192 5.4. Q. How can I evaluate an arbitrary Python expression from C?
193 5.5. Q. How do I extract C values from a Python object?
194 5.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
Guido van Rossum8727df41996-09-09 15:16:39 +0000195 5.7. Q. How do I call an object's method from C?
196 5.8. Q. How do I catch the output from print_error()?
197 5.9. Q. How do I access a module written in Python from C?
198 5.10. Q. How do I interface to C++ objects from Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000199
200 6. Python's design
Guido van Rossum8727df41996-09-09 15:16:39 +0000201 6.1. Q. Why isn't there a switch or case statement in Python?
202 6.2. Q. Why does Python use indentation for grouping of statements?
203 6.3. Q. Why are Python strings immutable?
204 6.4. Q. Why don't strings have methods like index() or sort(), like
Guido van Rossum3de27361994-07-25 14:19:33 +0000205 lists?
Guido van Rossum8727df41996-09-09 15:16:39 +0000206 6.5. Q. Why does Python use methods for some functionality
Guido van Rossum3de27361994-07-25 14:19:33 +0000207 (e.g. list.index()) but functions for other (e.g. len(list))?
Guido van Rossum8727df41996-09-09 15:16:39 +0000208 6.6. Q. Why can't I derive a class from built-in types (e.g. lists or
Guido van Rossum3de27361994-07-25 14:19:33 +0000209 files)?
Guido van Rossum8727df41996-09-09 15:16:39 +0000210 6.7. Q. Why must 'self' be declared and used explicitly in method
Guido van Rossum3de27361994-07-25 14:19:33 +0000211 definitions and calls?
Guido van Rossum8727df41996-09-09 15:16:39 +0000212 6.8. Q. Can't you emulate threads in the interpreter instead of
213 relying on an OS-specific thread implementation?
214 6.9. Q. Why can't lambda forms contain statements?
215 6.10. Q. Why don't lambdas have access to variables defined in the
216 containing scope?
217 6.11. Q. Why can't recursive functions be defined inside other functions?
Guido van Rossum061f1821994-10-06 16:03:45 +0000218 6.12. Q. Why is there no more efficient way of iterating over a dictionary
219 than first constructing the list of keys()?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000220 6.13. Q. Can Python be compiled to machine code, C or some other language?
Guido van Rossum05151e01995-09-28 13:24:46 +0000221 6.14. Q. Why doesn't Python use proper garbage collection?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000222
223 7. Using Python on non-UNIX platforms
Guido van Rossum91f60831994-02-15 15:52:27 +0000224 7.1. Q. Is there a Mac version of Python?
Guido van Rossumc458e941996-09-11 15:43:13 +0000225 7.2. Q. Are there DOS and Windows versions of Python?
226 7.3. Q. Is there an OS/2 version of Python?
227 7.4. Q. Is there a VMS version of Python?
228 7.5. Q. What about IBM mainframes, or other non-UNIX platforms?
229 7.6. Q. Where are the source or Makefiles for the non-UNIX versions?
230 7.7. Q. What is the status and support for the non-UNIX versions?
231 7.8. Q. I have a PC version but it appears to be only a binary.
232 Where's the library?
233 7.9. Q. Where's the documentation for the Mac or PC version?
234 7.10. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000235 creating or editing programs apart from entering it interactively, and
236 there seems to be no way to save code that was entered interactively.
237 How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000238
239To find a particular question, search for the question number followed
240by a dot, a space, and a Q at the beginning of a line (e.g. to find
241question 4.2 in vi, type /^4\.2\. Q/).
242
243
2441. General information and availability
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000245 =======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000246
2471.1. Q. What is Python?
248
249A. Python is an interpreted, interactive, object-oriented programming
250language. It incorporates modules, exceptions, dynamic typing, very
251high level dynamic data types, and classes. Python combines
252remarkable power with very clear syntax. It has interfaces to many
253system calls and libraries, as well as to various window systems, and
254is extensible in C or C++. It is also usable as an extension language
255for applications that need a programmable interface. Finally, Python
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000256is portable: it runs on many brands of UNIX, on the Mac, and on PCs
257under MS-DOS, Windows, Windows NT, and OS/2.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000258
259To find out more, the best thing to do is to start reading the
260tutorial from the documentation set (see a few questions further
261down).
262
2631.2. Q. Why is it called Python?
264
Guido van Rossum796b2591995-01-20 23:05:52 +0000265A. Apart from being a computer scientist, I'm also a fan of "Monty
Guido van Rossuma7925f11994-01-26 10:20:16 +0000266Python's Flying Circus" (a BBC comedy series from the seventies, in
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000267the -- unlikely -- case you didn't know). It occurred to me one day
268that I needed a name that was short, unique, and slightly mysterious.
269And I happened to be reading some scripts from the series at the
270time... So then I decided to call my language Python. But Python is
271not a joke. And don't you associate it with dangerous reptiles
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000272either! (If you need an icon, use an image of the 16-ton weight from
273the TV series or of a can of SPAM :-)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000274
2751.3. Q. How do I obtain a copy of the Python source?
276
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000277A. The latest complete Python source distribution is always available
278by anonymous ftp, e.g.
Guido van Rossum8727df41996-09-09 15:16:39 +0000279<URL:ftp://ftp.python.org/pub/python/src/python1.3.tar.gz>. It is a
Guido van Rossume530c581995-04-10 12:32:16 +0000280gzipped tar file containing the complete C source, LaTeX
281documentation, Python library modules, example programs, and several
282useful pieces of freely distributable software. This will compile and
283run out of the box on most UNIX platforms. (See section 7 for
284non-UNIX information.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000285
Guido van Rossum8727df41996-09-09 15:16:39 +0000286Sometimes beta versions of a newer release are available; check the
287subdirectory "beta" of the above-mentioned URL (i.e.
288<URL:ftp://ftp.python.org/pub/python/src/beta/>). (At the time of
289writing, beta3 for Python 1.4 is available there, and should be
290checked before reporting problems with version 1.3.)
291
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000292Occasionally a set of patches is issued which has to be applied using
293the patch program. These patches are placed in the same directory,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000294e.g. <URL:ftp://ftp.python.org/pub/python/src/patch1.1.1>. (At the time
Guido van Rossum8727df41996-09-09 15:16:39 +0000295of writing, no patches exist.)
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000296
297An index of said ftp directory can be found in the file INDEX. An
298HTML version of the index can be found in the file index.html,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000299<URL:ftp://ftp.python.org/pub/python/index.html>.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000300
3011.4. Q. How do I get documentation on Python?
302
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000303A. The LaTeX source for the documentation is part of the source
304distribution. If you don't have LaTeX, the latest Python
305documentation set is always available by anonymous ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000306<URL:ftp://ftp.python.org/pub/python/doc/postscript.tar.gz>. It is a
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000307gzipped tar file containing PostScript files of the reference manual,
Guido van Rossum3de27361994-07-25 14:19:33 +0000308the library manual, and the tutorial. Note that the library manual is
309the most important one of the set, as much of Python's power stems
310from the standard or built-in types, functions and modules, all of
311which are described here. PostScript for a high-level description of
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000312Python is in the file nluug-paper.ps (a separate file on the ftp
313site).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000314
Guido van Rossumc50158e1994-05-31 09:18:50 +00003151.5. Q. Are there other ftp sites that mirror the Python distribution?
316
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000317A. The following anonymous ftp sites keep mirrors of the Python
318distribution:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000319
Guido van Rossume7d92d51995-10-11 18:06:54 +0000320USA:
321
322 <URL:ftp://ftp.python.org/pub/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000323 <URL:ftp://gatekeeper.dec.com/pub/plan/python/>
Guido van Rossume7d92d51995-10-11 18:06:54 +0000324 <URL:ftp://ftp.uu.net/languages/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000325 <URL:ftp://ftp.wustl.edu/graphics/graphics/sgi-stuff/python/>
Guido van Rossume7d92d51995-10-11 18:06:54 +0000326 <URL:ftp://ftp.sterling.com/programming/languages/python/>
327 <URL:ftp://uiarchive.cso.uiuc.edu/pub/lang/python/>
328 <URL:ftp://ftp.pht.com/mirrors/python/python/>
Guido van Rossum7b6f3431997-02-25 23:08:03 +0000329 <URL:ftp://ftp.cdrom.com/pub/python/>
Guido van Rossume7d92d51995-10-11 18:06:54 +0000330
331Europe:
332
333 <URL:ftp://ftp.cwi.nl/pub/python/>
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000334 <URL:ftp://ftp.funet.fi/pub/languages/python/>
335 <URL:ftp://ftp.sunet.se/pub/lang/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000336 <URL:ftp://unix.hensa.ac.uk/mirrors/uunet/languages/python/>
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000337 <URL:ftp://ftp.ibp.fr/pub/python/>
Guido van Rossum79413791996-12-05 22:01:11 +0000338 <URL:ftp://sunsite.cnlab-switch.ch/mirror/python/>
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000339 <URL:ftp://ftp.informatik.tu-muenchen.de/pub/comp/programming/languages/python/>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000340
Guido van Rossume7d92d51995-10-11 18:06:54 +0000341Australia:
342
343 <URL:ftp://ftp.dstc.edu.au/pub/python/>
344
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000345Or try archie on the string "python".
Guido van Rossuma7925f11994-01-26 10:20:16 +0000346
Guido van Rossumc50158e1994-05-31 09:18:50 +00003471.6. Q. Is there a newsgroup or mailing list devoted to Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000348
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000349A. There is a newsgroup, comp.lang.python <URL:news:comp.lang.python>,
350and a mailing list. The newsgroup and mailing list are gatewayed into
351each other -- if you can read news it's unnecessary to subscribe to
352the mailing list. Send e-mail to <python-list-request@cwi.nl> to
Guido van Rossume530c581995-04-10 12:32:16 +0000353(un)subscribe to the mailing list. Hypermail archives of (nearly)
354everything posted to the mailing list (and thus the newsgroup) are
355available on our WWW server,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000356<URL:http://www.cwi.nl/~guido/hypermail/index.html>. The raw archives
357are also available by ftp, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000358<URL:ftp://ftp.python.org/pub/python/mail/mailinglist.gz>. The
Guido van Rossume530c581995-04-10 12:32:16 +0000359uncompressed versions of these files can be read with the standard
360UNIX Mail program ("Mail -f file") or with nn ("nn file"). To read
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000361them using MH, you could use "inc -file file". (The archival service
362has stopped archiving new articles around the end of April 1995. I
363hope to revive it on the PSA server www.python.org sometime in the
364future.)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000365
Guido van Rossuma6c707c1995-01-02 17:32:28 +00003661.7. Q. Is there a WWW page devoted to Python?
367
Guido van Rossum7be34a81995-05-31 15:17:12 +0000368A. Yes, <URL:http://www.python.org/> is the official Python home page.
369At the time of writing, this page is not yet completely operational;
370you may have a look at the old Python home page:
371<URL:http://www.cwi.nl/~guido/Python.html> or at the U.S. copy:
372<URL:http://www.python.org/~guido/Python.html>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000373
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00003741.8. Q. Is the Python documentation available on the WWW?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000375
Guido van Rossum7be34a81995-05-31 15:17:12 +0000376A. Yes, see <URL:http://www.python.org/> (Python's home page). It
377contains pointers to hypertext versions of the whole documentation set
378(as hypertext, not just PostScript).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000379
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000380If you wish to browse this collection of HTML files on your own
381machine, it is available bundled up by anonymous ftp,
Guido van Rossum7be34a81995-05-31 15:17:12 +0000382e.g. <URL:ftp://ftp.python.org/pub/python/doc/html.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000383
384An Emacs-INFO set containing the library manual is also available by
Guido van Rossum7be34a81995-05-31 15:17:12 +0000385ftp, e.g. <URL:ftp://ftp.python.org/pub/python/doc/lib-info.tar.gz>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000386
3871.9. Q. Is there a book on Python, or will there be one out soon?
388
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000389A. Mark Lutz is writing a Python book for O'Reilly and Associates, to
390be published early 1996. See the outline (in PostScript):
391<URL:http://www.python.org/workshops/1995-05/outlinep.eps>.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000392
3931.10. Q. Are there any published articles about Python that I can quote?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000394
395A. So far the only refereed and published article that describes
396Python in some detail is:
397
398 Guido van Rossum and Jelke de Boer, "Interactively Testing Remote
399 Servers Using the Python Programming Language", CWI Quarterly, Volume
400 4, Issue 4 (December 1991), Amsterdam, pp 283-303.
401
402LaTeX source for this paper is available as part of the Python source
403distribution.
404
Guido van Rossum05151e01995-09-28 13:24:46 +0000405See also the next section (supposedly Aaron Watters' paper has been
406refereed).
407
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00004081.11. Q. Are there short introductory papers or talks on Python?
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000409
Guido van Rossum05151e01995-09-28 13:24:46 +0000410A. A recent, very entertaining introduction to Python is the tutorial by
411Aaron Watters in UnixWorld Online:
412
413 Aaron R. Watters: "The What, Why, Who, and Where of Python",
414 <URL:http://www.wcmh.com/uworld/archives/95/tutorial/005.html>
415
416An olded paper is:
Guido van Rossuma7925f11994-01-26 10:20:16 +0000417
418 Guido van Rossum, "An Introduction to Python for UNIX/C
419 Programmers", in the proceedings of the NLUUG najaarsconferentie
Guido van Rossum061f1821994-10-06 16:03:45 +0000420 1993 (dutch UNIX users group meeting November 1993).
Guido van Rossuma7925f11994-01-26 10:20:16 +0000421
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000422PostScript for this paper and for the slides used for the accompanying
423presentation is available by ftp as
Guido van Rossum7be34a81995-05-31 15:17:12 +0000424<URL:ftp://ftp.python.org/pub/python/doc/nluug-paper.ps> and
425<URL:ftp://ftp.python.org/pub/python/doc/nluug-slides.ps>, respectively.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000426
427Slides for a talk on Python that I gave at the Usenix Symposium on
Guido van Rossum05151e01995-09-28 13:24:46 +0000428Very High Level Languages in Santa Fe, NM, USA in October 1994 are
Guido van Rossum7be34a81995-05-31 15:17:12 +0000429available as <URL:ftp://ftp.python.org/pub/python/doc/vhll-slides.ps>.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000430
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00004311.12. Q. How does the Python version numbering scheme work?
Guido van Rossum95f61a71994-01-26 17:23:37 +0000432
Guido van Rossum05151e01995-09-28 13:24:46 +0000433A. Python versions are numbered A.B.C or A.B. A is the major version
434number -- it is only incremented for major changes in functionality or
435source structure. B is the minor version number, incremented for less
Guido van Rossum95f61a71994-01-26 17:23:37 +0000436earth-shattering changes to a release. C is the patchlevel -- it is
Guido van Rossum05151e01995-09-28 13:24:46 +0000437incremented for each new patch release. Not all releases have patch
438releases. Note that in the past, patches have added significant
439changes; in fact the changeover from 0.9.9 to 1.0.0 was the first time
440that either A or B changed!
Guido van Rossum95f61a71994-01-26 17:23:37 +0000441
Guido van Rossum8727df41996-09-09 15:16:39 +0000442Beta versions have an additional suffix of "betaN" for some small
443number N. Note that (for instance) all versions labeled 1.4betaN
444*precede* the actual release of 1.4. 1.4b3 is short for 1.4beta3.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000445
4461.13. Q. How do I get a beta test version of Python?
447
Guido van Rossum05151e01995-09-28 13:24:46 +0000448A. If there are any beta releases, they are published in the normal
449source directory (e.g. <URL:ftp://ftp.python.org/pub/python/src/>).
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +0000450
Guido van Rossum05151e01995-09-28 13:24:46 +00004511.14. Q. Are there copyright restrictions on the use of Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000452
453A. Hardly. You can do anything you want with the source, as long as
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000454you leave the copyrights in, and display those copyrights in any
455documentation about Python that you produce. Also, don't use the
456author's institute's name in publicity without prior written
457permission, and don't hold them responsible for anything (read the
458actual copyright for a precise legal wording).
459
460In particular, if you honor the copyright rules, it's OK to use Python
461for commercial use, to sell copies of Python in source or binary form,
462or to sell products that enhance Python or incorporate Python (or part
463of it) in some form. I would still like to know about all commercial
464use of Python!
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000465
Guido van Rossum05151e01995-09-28 13:24:46 +00004661.15. Q. Why was Python created in the first place?
Guido van Rossum7be34a81995-05-31 15:17:12 +0000467
468A. Here's a *very* brief summary of what got me started:
469
470- I had extensive experience with implementing an interpreted language
471in the ABC group at CWI, and from working with this group I had
472learned a lot about language design. This is the origin of many
473Python features, including the use of indentation for statement
474grouping and the inclusion of very-high-level data types (although the
475details are all different in Python).
476
477- I had a number of gripes about the ABC language, but also liked many
478of its features. It was impossible to extend the ABC language (or its
479implementation) to remedy my complaints -- in fact its lack of
480extensibility was one of its biggest problems.
481
482- I had some experience with using Modula-2+ and talked with the
483designers of Modula-3 (and read the M3 report). M3 is the origin of
484the syntax and semantics used for exceptions, and some other Python
485features.
486
487- I was working in the Amoeba distributed operating system group at
488CWI. We needed a better way to do system administration than by
489writing either C programs or Bourne shell scripts, since Amoeba had
490its own system call interface which wasn't easily accessible from the
Guido van Rossumbf8e7d51995-08-28 03:09:13 +0000491Bourne shell. My experience with error handling in Amoeba made me
492acutely aware of the importance of exceptions as a programming
493language feature.
Guido van Rossum7be34a81995-05-31 15:17:12 +0000494
495- It occurred to me that a scripting language with a syntax like ABC
496but with access to the Amoeba system calls would fill the need. I
497realized that it would be foolish to write an Amoeba-specific
498language, so I decided that I needed a language that was generally
499extensible.
500
501- During the 1989 Christmas holidays, I had a lot of time on my hand,
502so I decided to give it a try. During the next year, while still
503mostly working on it in my own time, Python was used in the Amoeba
504project with increasing success, and the feedback from colleagues made
505me add many early improvements.
506
507- In February 1991, after just over a year of development, I decided
508to post to USENET. The rest is in the Misc/HISTORY file.
509
Guido van Rossuma7925f11994-01-26 10:20:16 +0000510
5112. Python in the real world
512===========================
513
5142.1. Q. How many people are using Python?
515
Guido van Rossum5333c5d1994-04-11 11:06:22 +0000516A. I don't know, but the maximum number of simultaneous subscriptions
517to the Python mailing list before it was gatewayed into the newsgroup
518was about 180 (several of which were local redistribution lists). I
519believe that many active Python users don't bother to subscribe to the
520list, and now that there's a newsgroup the mailing list subscription
Guido van Rossum7ce61c11994-06-13 15:13:56 +0000521is even less meaningful. I see new names on the newsgroup all the
522time and my best guess is that there are currently at least several
523thousands of users.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000524
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000525Another statistic is the number of accesses to the Python WWW server.
526Have a look at <URL:http://www.python.org/stats/>.
527
Guido van Rossuma7925f11994-01-26 10:20:16 +00005282.2. Q. Have any significant projects been done in Python?
529
530A. Here at CWI (the home of Python), we have written a 20,000 line
531authoring environment for transportable hypermedia presentations, a
Guido van Rossum5333c5d1994-04-11 11:06:22 +00005325,000 line multimedia teleconferencing tool, as well as many many
533smaller programs.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000534
535The University of Virginia uses Python to control a virtual reality
536engine. Contact: Matt Conway <conway@virginia.edu>.
537
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000538The ILU project at Xerox PARC can generate Python glue for ILU
539interfaces. See <URL:ftp://ftp.parc.xerox.com/pub/ilu/ilu.html>.
540
Guido van Rossumac3f2121995-04-10 11:53:42 +0000541The University of California, Irvine uses a student administration
542system called TELE-Vision written entirely in Python. Contact: Ray
543Price <rlprice@uci.edu>.
544
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000545See also the next question.
546
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000547If you have done a significant project in Python that you'd like to be
548included in the list above, send me email!
Guido van Rossuma7925f11994-01-26 10:20:16 +0000549
5502.3. Q. Are there any commercial projects going on using Python?
551
Guido van Rossum17e973c1997-02-26 16:11:55 +0000552A. Yes, there's lots of commercial activity using Python. See
553<URL:http://www.python.org/python/Users.html> for a list.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000554
Guido van Rossum95f61a71994-01-26 17:23:37 +00005552.4. Q. How stable is Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000556
Guido van Rossum3de27361994-07-25 14:19:33 +0000557A. Very stable. While the current version number would suggest it is
558in the early stages of development, in fact new, stable releases
Guido van Rossumba469ba1996-12-05 22:26:17 +0000559(numbered 0.9.x through 1.4) have been coming out roughly every 3 to
5606 or 12 months for the past four years.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000561
Guido van Rossum8727df41996-09-09 15:16:39 +00005622.5. Q. What new developments are expected for Python in the future?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000563
Guido van Rossumba469ba1996-12-05 22:26:17 +0000564A. Follow the newsgroup discussions! The workshop proceedings
565(<URL:http://www.python.org/workshops/>) may also contain interesting
566looks into the future.
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000567
Guido van Rossum8727df41996-09-09 15:16:39 +00005682.6. Q. Is it reasonable to propose incompatible changes to Python?
Guido van Rossum3de27361994-07-25 14:19:33 +0000569
570A. In general, no. There are already millions of lines of Python code
571around the world, so any changes in the language that invalidates more
572than a very small fraction of existing programs has to be frowned
573upon. Even if you can provide a conversion program, there still is
574the problem of updating all documentation. Providing a gradual
575upgrade path is the only way if a feature has to be changed.
576
Guido van Rossum8727df41996-09-09 15:16:39 +00005772.7. Q. What is the future of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000578
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000579A. If I knew, I'd be rich :-)
580
581Seriously, the formation of the PSA (Pyton Software Activity, see
582<URL:http://www.python.org/psa/>) ensures some kind of support even in
583the (unlikely! event that I'd be hit by a bus (actually, here in the
584US, a car accident would be more likely :-), were to join a nunnery,
585or would be head-hunted. A large number of Python users have become
586experts at Python programming as well as maintenance of the
587implementation, and would easily fill the vacuum created by my
588disappearance.
589
590In the mean time, I have no plans to disappear -- rather, I am
591committed to improving Python, and my current benefactor, CNRI (see
592<URL:http://www.cnri.reston.va.us>) is just as committed to continue
593its support of Python and the PSA. In fact, we have great plans for
594Python -- we just can't tell yet!
595
Guido van Rossum8727df41996-09-09 15:16:39 +00005962.8. Q. What is the PSA, anyway?
Guido van Rossum05151e01995-09-28 13:24:46 +0000597
598A. The Python Software Activity <URL:http://www.python.org/psa/> was
599created by a number of Python aficionados who want Python to be more
600than the product and responsibility of a single individual. It has
601found a home at CNRI <URL:http://www.cnri.reston.va.us>. Anybody who
602wishes Python well should join the PSA.
603
Guido van Rossum8727df41996-09-09 15:16:39 +00006042.9. Q. How do I join the PSA?
Guido van Rossum05151e01995-09-28 13:24:46 +0000605
606A. The full scoop is available on the web, see
607<URL:http://www.python.org/psa/Joining.html>. Summary: send a check
608of at least $50 to CNRI/PSA, 1895 Preston White Drive, Suite 100, in
Guido van Rossum81300541996-09-06 16:37:56 +0000609Reston, VA 20191. Full-time students pay $25. Companies can join for
Guido van Rossum05151e01995-09-28 13:24:46 +0000610a mere $500.
611
Guido van Rossum8727df41996-09-09 15:16:39 +00006122.10. Q. What are the benefits of joining the PSA?
Guido van Rossum05151e01995-09-28 13:24:46 +0000613
614A. Like National Public Radio, if not enough people join, Python will
615wither. Your name will be mentioned on the PSA's web server.
616Workshops organized by the PSA <URL:http://www.python.org/workshops/>
617are only accessible to PSA members (you can join at the door). The
618PSA is working on additional benefits, such as reduced prices for
619books and software, and early access to beta versions of Python.
620
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000621
6223. Building Python and Other Known Bugs
623=======================================
Guido van Rossuma7925f11994-01-26 10:20:16 +0000624
Guido van Rossum91f60831994-02-15 15:52:27 +00006253.1. Q. Is there a test set?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000626
627A. Yes, simply do "import testall" (or "import autotest" if you aren't
628interested in the output). The standard modules whose name begins
629with "test" together comprise the test. The test set doesn't test
630*all* features of Python but it goes a long way to confirm that a new
631port is actually working. The Makefile contains an entry "make test"
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000632which runs the autotest module. NOTE: if "make test" fails, run the
633tests manually ("import testall") to see what goes wrong before
634reporting the error.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000635
Guido van Rossum91f60831994-02-15 15:52:27 +00006363.2. Q. When running the test set, I get complaints about floating point
Guido van Rossuma7925f11994-01-26 10:20:16 +0000637operations, but when playing with floating point operations I cannot
638find anything wrong with them.
639
640A. The test set makes occasional unwarranted assumptions about the
641semantics of C floating point operations. Until someone donates a
642better floating point test set, you will have to comment out the
643offending floating point tests and execute similar tests manually.
644
Guido van Rossum7be34a81995-05-31 15:17:12 +00006453.3. Q. Link errors after rerunning the configure script.
Guido van Rossum24349991994-02-02 14:12:45 +0000646
647A. It is generally necessary to run "make clean" after a configuration
648change.
649
Guido van Rossum7be34a81995-05-31 15:17:12 +00006503.4. Q. The python interpreter complains about options passed to a
Guido van Rossum24349991994-02-02 14:12:45 +0000651script (after the script name).
652
653A. You are probably linking with GNU getopt, e.g. through -liberty.
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000654Don't. The reason for the complaint is that GNU getopt, unlike System
655V getopt and other getopt implementations, doesn't consider a
656non-option to be the end of the option list. A quick (and compatible)
657fix for scripts is to add "--" to the interpreter, like this:
658
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000659 #! /usr/local/bin/python --
Guido van Rossumf8c76d01994-08-17 12:19:53 +0000660
661You can also use this interactively:
662
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000663 python -- script.py [options]
664
665Note that a working getopt implementation is provided in the Python
666distribution (in Python/getopt.c) but not automatically used.
Guido van Rossum24349991994-02-02 14:12:45 +0000667
Guido van Rossum7be34a81995-05-31 15:17:12 +00006683.5. Q. When building on the SGI, make tries to run python to create
Guido van Rossum24349991994-02-02 14:12:45 +0000669glmodule.c, but python hasn't been built or installed yet.
670
671A. Comment out the line mentioning glmodule.c in Setup and build a
672python without gl first; install it or make sure it is in your $PATH,
673then edit the Setup file again to turn on the gl module, and make
674again. You don't need to do "make clean"; you do need to run "make
675Makefile" in the Modules subdirectory (or just run "make" at the
676toplevel).
677
Guido van Rossum8727df41996-09-09 15:16:39 +00006783.6. Q. I use VPATH but some targets are built in the source directory.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000679
680A. On some systems (e.g. Sun), if the target already exists in the
681source directory, it is created there instead of in the build
682directory. This is usually because you have previously built without
683VPATH. Try running "make clobber" in the source directory.
684
Guido van Rossum8727df41996-09-09 15:16:39 +00006853.7. Q. Trouble building or linking with the GNU readline library.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000686
Guido van Rossumac3f2121995-04-10 11:53:42 +0000687A. Consider using readline 2.0. Some hints:
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000688
689- You can use the GNU readline library to improve the interactive user
690interface: this gives you line editing and command history when
Guido van Rossum796b2591995-01-20 23:05:52 +0000691calling python interactively. You need to configure and build the GNU
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000692readline library before running the configure script. Its sources are
693no longer distributed with Python; you can ftp them from any GNU
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000694mirror site, or from its home site
695<URL:ftp://slc2.ins.cwru.edu/pub/dist/readline-2.0.tar.gz> (or a
696higher version number -- using version 1.x is not recommended). Pass
697the Python configure script the option --with-readline=DIRECTORY where
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000698DIRECTORY is the absolute pathname of the directory where you've built
699the readline library. Some hints on building and using the readline
700library:
701
702- On SGI IRIX 5, you may have to add the following
703to rldefs.h:
704
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000705 #ifndef sigmask
706 #define sigmask(sig) (1L << ((sig)-1))
707 #endif
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000708
709- On most systems, you will have to add #include "rldefs.h" to the
710top of several source files, and if you use the VPATH feature, you
711will have to add dependencies of the form foo.o: foo.c to the
712Makefile for several values of foo.
713
714- The readline library requires use of the termcap library. A
715known problem with this is that it contains entry points which
Guido van Rossum061f1821994-10-06 16:03:45 +0000716cause conflicts with the STDWIN and SGI GL libraries. The STDWIN
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000717conflict can be solved (and will be, in the next release of
Guido van Rossum061f1821994-10-06 16:03:45 +0000718STDWIN) by adding a line saying '#define werase w_erase' to the
719stdwin.h file (in the STDWIN distribution, subdirectory H). The
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000720GL conflict has been solved in the Python configure script by a
721hack that forces use of the static version of the termcap library.
722
Guido van Rossumac3f2121995-04-10 11:53:42 +0000723- Check the newsgroup gnu.bash.bug <URL:news:gnu.bash.bug> for
724specific problems with the readline library (I don't read this group
725but I've been told that it is the place for readline bugs).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000726
Guido van Rossum8727df41996-09-09 15:16:39 +00007273.8. Q. Trouble with socket I/O on older Linux 1.x versions.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000728
729A. Once you've built Python, use it to run the regen.py script in the
730Lib/linux1 directory. Apparently the files as distributed don't match
731the system headers on some Linux versions.
732
Guido van Rossum8727df41996-09-09 15:16:39 +00007333.9. Q. Trouble with prototypes on Ultrix.
Guido van Rossum72eb83c1994-10-07 11:33:28 +0000734
735A. Ultrix cc seems broken -- use gcc, or edit config.h to #undef
736HAVE_PROTOTYPES.
737
Guido van Rossum8a913021996-10-08 17:18:30 +00007383.10. Q. Other trouble building Python on platform X.
Guido van Rossum95f61a71994-01-26 17:23:37 +0000739
Guido van Rossum81300541996-09-06 16:37:56 +0000740A. Please email the details to <guido@cnri.reston.va.us> and I'll look
741into it. Please provide as many details as possible. In particular,
742if you don't tell me what type of computer and what operating system
743(and version) you are using it will be difficult for me to figure out
744what is the matter. If you get a specific error message, please email
745it to me too.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000746
Guido van Rossum8a913021996-10-08 17:18:30 +00007473.11. Q. How to configure dynamic loading on Linux.
Guido van Rossum07779351995-02-07 16:59:56 +0000748
Guido van Rossum8727df41996-09-09 15:16:39 +0000749A. This is now automatic as long as your Linux version uses the ELF
750object format (all recent Linuxes do).
Guido van Rossum07779351995-02-07 16:59:56 +0000751
Guido van Rossum9c5dc291996-10-13 15:48:56 +00007523.12. Q: I can't get shared modules to work on Linux 2.0 (Slackware96)?
753
754A: This is a bug in the Slackware96 release. The fix is simple:
755
756Make sure that there is a link from /lib/libdl.so to /lib/libdl.so.1
757so that the following links are setup:
758
759 /lib/libdl.so -> /lib/libdl.so.1
760 /lib/libdl.so.1 -> /lib/libdl.so.1.7.14
761
Guido van Rossum8651d271997-02-17 18:27:32 +0000762You may have to rerun the configure script, after rm'ing the
763config.cache file, before you attempt to rebuild python after this
764fix.
765
Guido van Rossumcaa83c41996-11-13 15:06:24 +00007663.13. Q: Trouble when making modules shared on Linux.
767
768A. This happens when you have built Python for static linking and then
769enable *shared* in the Setup file. Shared library code must be
770compiled with "-fpic". If a .o file for the module already exist that
771was compiled for static linking, you must remove it or do "make clean"
772in the Modules directory.
773
7743.14. Q. How to use threads on Linux.
Guido van Rossum9e0e4dd1996-10-23 20:52:55 +0000775
776A. [Greg Stein] I built myself a libpthreads.so from the libc.5.3.12
777distribution (the binary distribution doesn't have pthreads in
778it). Then, I configured Python with --with-threads and then tweaked
779config.h to include a #define _MIT_POSIX_THREADS (or something like
780that, see /usr/include/pthreads.h). It worked fine at that point.
781
782Note that I couldn't get threading to "operate well" with any of the
783other thread packages. Prior libc versions didn't integrate well with
784threads, either, so I couldn't use them (e.g. sleep() blocked all
785threads :-( ).
786
Guido van Rossumcaa83c41996-11-13 15:06:24 +00007873.15. Q. Errors when linking with a shared library containing C++ code.
Guido van Rossum3fc9d731995-07-25 15:10:56 +0000788
789A. Link the main Python binary with C++. Change the definition of
790LINKCC in Modules/Makefile to be your C++ compiler. You may have to
791edit config.c slightly to make it compilable with C++.
Guido van Rossum07779351995-02-07 16:59:56 +0000792
Guido van Rossumcaa83c41996-11-13 15:06:24 +00007933.16. Q. I built with tkintermodule.c enabled but get "Tkinter not found".
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000794
795A. Tkinter.py (note: upper case T) lives in a subdirectory of Lib,
796Lib/tkinter. If you are using the default module search path, you
797probably didn't enable the line in the Modules/Setup file defining
798TKPATH; if you use the environment variable PYTHONPATH, you'll have to
799add the proper tkinter subdirectory.
800
Guido van Rossumcaa83c41996-11-13 15:06:24 +00008013.17. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000802
803A. Several things could cause this. You most likely have a Tk 3.6
804installation that wasn't completely eradicated by the Tk 4.0
805installation (which tends to add "4.0" to its installed files). You
806may have the Tk 3.6 support library installed in the place where the
807Tk 4.0 support files should be (default /usr/local/lib/tk/); you may
808have compiled Python with the old tk.h header file (yes, this actually
809compiles!); you may actually have linked with Tk 3.6 even though Tk
8104.0 is also around. Similar for Tcl 7.4 vs. Tcl 7.3.
811
Guido van Rossumcaa83c41996-11-13 15:06:24 +00008123.18. Q. Link errors for Tcl/Tk symbols when linking with Tcl/Tk.
Guido van Rossum8727df41996-09-09 15:16:39 +0000813
814Quite possibly, there's a version mismatch between the Tcl/Tk header
815files (tcl.h and tk.h) and the tck/tk libraries you are using (the
816"-ltk4.0" and "-ltcl7.4" arguments for _tkinter in the Setup file).
817If you have installed both versions 7.4/4.0 and 7.5/4.1 of Tcl/Tk,
818most likely your header files are for The newer versions, but the
819Setup line for _tkinter in some Python distributions references
8207.4/4.0 by default. Changing this to 7.5/4.1 should take care of
821this.
822
Guido van Rossumcaa83c41996-11-13 15:06:24 +00008233.19. Q. I configured and built Python for Tcl/Tk but "import Tkinter"
Guido van Rossum8727df41996-09-09 15:16:39 +0000824fails.
825
826A. Most likely, you forgot to enable the line in Setup that says
827"TKPATH=:$(DESTLIB)/tkinter".
828
Guido van Rossumcaa83c41996-11-13 15:06:24 +00008293.20. Q. Tk doesn't work right on DEC Alpha.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +0000830
831A. You probably compiled either Tcl, Tk or Python with gcc. Don't.
832For this platform, which has 64-bit integers, gcc is known to generate
833broken code. The standard cc (which comes bundled with the OS!)
834works. If you still prefer gcc, at least try recompiling with cc
835before reporting problems to the newsgroup or the author; if this
836fixes the problem, report the bug to the gcc developers instead. (As
837far as we know, there are no problem with gcc on other platforms --
838the instabilities seem to be restricted to the DEC Alpha.) See also
839question 3.6.
840
Guido van Rossumcaa83c41996-11-13 15:06:24 +00008413.21. Q. Several common system calls are missing from the posix module.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000842
843A. Most likely, *all* test compilations run by the configure script
844are failing for some reason or another. Have a look in config.log to
845see what could be the reason. A common reason is specifying a
846directory to the --with-readline option that doesn't contain the
847libreadline.a file.
848
Guido van Rossumcaa83c41996-11-13 15:06:24 +00008493.22. Q. ImportError: No module named string, on MS Windows.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000850
851A. Most likely, your PYTHONPATH environment variable should be set to
852something like:
853
854set PYTHONPATH=c:\python;c:\python\lib;c:\python\scripts
855
856(assuming Python was installed in c:\python)
857
Guido van Rossumcaa83c41996-11-13 15:06:24 +00008583.23. Q. Core dump on SGI when using the gl module.
Guido van Rossumca318ec1996-06-26 19:50:09 +0000859
860There are conflicts between entry points in the termcap and curses
861libraries and an entry point in the GL library. There's a hack of a
862fix for the termcap library if it's needed for the GNU readline
863library, but it doesn't work when you're using curses. Concluding,
864you can't build a Python binary containing both the curses and gl
865modules.
866
867
Guido van Rossuma7925f11994-01-26 10:20:16 +0000868
8694. Programming in Python
870========================
871
Guido van Rossum24349991994-02-02 14:12:45 +00008724.1. Q. Is there a source code level debugger with breakpoints, step,
873etc.?
874
875A. Yes. Check out module pdb; pdb.help() prints the documentation (or
876you can read it as Lib/pdb.doc). If you use the STDWIN option,
877there's also a windowing interface, wdb. You can write your own
878debugger by using the code for pdb or wdb as an example.
879
8804.2. Q. Can I create an object class with some methods implemented in
Guido van Rossuma7925f11994-01-26 10:20:16 +0000881C and others in Python (e.g. through inheritance)? (Also phrased as:
882Can I use a built-in type as base class?)
883
884A. No, but you can easily create a Python class which serves as a
885wrapper around a built-in object, e.g. (for dictionaries):
886
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000887 # A user-defined class behaving almost identical
888 # to a built-in dictionary.
889 class UserDict:
890 def __init__(self): self.data = {}
891 def __repr__(self): return repr(self.data)
892 def __cmp__(self, dict):
893 if type(dict) == type(self.data):
894 return cmp(self.data, dict)
895 else:
896 return cmp(self.data, dict.data)
897 def __len__(self): return len(self.data)
898 def __getitem__(self, key): return self.data[key]
899 def __setitem__(self, key, item): self.data[key] = item
900 def __delitem__(self, key): del self.data[key]
901 def keys(self): return self.data.keys()
902 def items(self): return self.data.items()
903 def values(self): return self.data.values()
904 def has_key(self, key): return self.data.has_key(key)
Guido van Rossuma7925f11994-01-26 10:20:16 +0000905
Guido van Rossum8651d271997-02-17 18:27:32 +0000906A2. See Jim Fulton's ExtensionClass for an example of a mechanism
907which allows you to have superclasses which you can inherit from in
908Python -- that way you can have some methods from a C superclass (call
909it a mixin) and some methods from either a Python superclass or your
910subclass. See <URL:http://www.digicool.com/papers/ExtensionClass.html>.
911
Guido van Rossum24349991994-02-02 14:12:45 +00009124.3. Q. Is there a curses/termcap package for Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000913
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000914A. Yes -- Lance Ellinghaus has written a module that interfaces to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000915System V's "ncurses". If you know a little curses and some Python,
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000916it's straightforward to use. It is part of the standard Python
917distribution, but not configured by default -- you must enable it by
918editing Modules/Setup. It requires a System V curses implementation.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000919
920You could also consider using the "alfa" (== character cell) version
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000921of STDWIN. (Standard Window System Interface, a portable windowing
922system interface by myself <URL:ftp://ftp.cwi.nl/pub/stdwin/>.) This
Guido van Rossumb34e8aa1994-09-23 14:20:38 +0000923will also prepare your program for porting to windowing environments
924such as X11 or the Macintosh.
Guido van Rossuma7925f11994-01-26 10:20:16 +0000925
Guido van Rossum24349991994-02-02 14:12:45 +00009264.4. Q. Is there an equivalent to C's onexit() in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000927
928A. Yes, if you import sys and assign a function to sys.exitfunc, it
929will be called when your program exits, is killed by an unhandled
930exception, or (on UNIX) receives a SIGHUP or SIGTERM signal.
931
Guido van Rossum24349991994-02-02 14:12:45 +00009324.5. Q. When I define a function nested inside another function, the
Guido van Rossuma7925f11994-01-26 10:20:16 +0000933nested function seemingly can't access the local variables of the
934outer function. What is going on? How do I pass local data to a
935nested function?
936
937A. Python does not have arbitrarily nested scopes. When you need to
938create a function that needs to access some data which you have
939available locally, create a new class to hold the data and return a
940method of an instance of that class, e.g.:
941
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000942 class MultiplierClass:
943 def __init__(self, factor):
944 self.factor = factor
945 def multiplier(self, argument):
946 return argument * self.factor
Guido van Rossuma7925f11994-01-26 10:20:16 +0000947
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000948 def generate_multiplier(factor):
949 return MultiplierClass(factor).multiplier
Guido van Rossuma7925f11994-01-26 10:20:16 +0000950
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000951 twice = generate_multiplier(2)
952 print twice(10)
953 # Output: 20
954
955An alternative solution uses default arguments, e.g.:
956
957 def generate_multiplier(factor):
958 def multiplier(arg, fact = factor):
959 return arg*fact
960 return multiplier
961
962 twice = generate_multiplier(2)
963 print twice(10)
964 # Output: 20
Guido van Rossuma7925f11994-01-26 10:20:16 +0000965
Guido van Rossum24349991994-02-02 14:12:45 +00009664.6. Q. How do I iterate over a sequence in reverse order?
Guido van Rossuma7925f11994-01-26 10:20:16 +0000967
968A. If it is a list, the fastest solution is
969
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000970 list.reverse()
971 try:
972 for x in list:
973 "do something with x"
974 finally:
975 list.reverse()
Guido van Rossuma7925f11994-01-26 10:20:16 +0000976
977This has the disadvantage that while you are in the loop, the list
978is temporarily reversed. If you don't like this, you can make a copy.
979This appears expensive but is actually faster than other solutions:
980
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000981 rev = list[:]
982 rev.reverse()
983 for x in rev:
984 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000985
986If it isn't a list, a more general but slower solution is:
987
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000988 i = len(list)
989 while i > 0:
990 i = i-1
991 x = list[i]
992 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +0000993
994A more elegant solution, is to define a class which acts as a sequence
995and yields the elements in reverse order (solution due to Steve
996Majewski):
997
Guido van Rossuma6c707c1995-01-02 17:32:28 +0000998 class Rev:
999 def __init__(self, seq):
1000 self.forw = seq
1001 def __len__(self):
1002 return len(self.forw)
1003 def __getitem__(self, i):
1004 return self.forw[-(i + 1)]
Guido van Rossuma7925f11994-01-26 10:20:16 +00001005
1006You can now simply write:
1007
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001008 for x in Rev(list):
1009 <do something with x>
Guido van Rossuma7925f11994-01-26 10:20:16 +00001010
Guido van Rossum061f1821994-10-06 16:03:45 +00001011Unfortunately, this solution is slowest of all, due to the method
Guido van Rossuma7925f11994-01-26 10:20:16 +00001012call overhead...
1013
Guido van Rossum24349991994-02-02 14:12:45 +000010144.7. Q. My program is too slow. How do I speed it up?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001015
1016A. That's a tough one, in general. There are many tricks to speed up
1017Python code; I would consider rewriting parts in C only as a last
1018resort. One thing to notice is that function and (especially) method
1019calls are rather expensive; if you have designed a purely OO interface
1020with lots of tiny functions that don't do much more than get or set an
1021instance variable or call another method, you may consider using a
1022more direct way, e.g. directly accessing instance variables. Also see
1023the standard module "profile" (described in the file
1024"python/lib/profile.doc") which makes it possible to find out where
1025your program is spending most of its time (if you have some patience
1026-- the profiling itself can slow your program down by an order of
1027magnitude).
1028
Guido van Rossum24349991994-02-02 14:12:45 +000010294.8. Q. When I have imported a module, then edit it, and import it
Guido van Rossuma7925f11994-01-26 10:20:16 +00001030again (into the same Python process), the changes don't seem to take
1031place. What is going on?
1032
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001033A. For reasons of efficiency as well as consistency, Python only reads
Guido van Rossum796b2591995-01-20 23:05:52 +00001034the module file on the first time a module is imported. (Otherwise a
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001035program consisting of many modules, each of which imports the same
Guido van Rossum796b2591995-01-20 23:05:52 +00001036basic module, would read the basic module over and over again.) To
1037force rereading of a changed module, do this:
Guido van Rossuma7925f11994-01-26 10:20:16 +00001038
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001039 import modname
1040 reload(modname)
Guido van Rossuma7925f11994-01-26 10:20:16 +00001041
1042Warning: this technique is not 100% fool-proof. In particular,
1043modules containing statements like
1044
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001045 from modname import some_objects
Guido van Rossuma7925f11994-01-26 10:20:16 +00001046
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001047will continue to work with the old version of the imported objects.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001048
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000010494.9. Q. How do I find the current module name?
Guido van Rossum24349991994-02-02 14:12:45 +00001050
Guido van Rossum061f1821994-10-06 16:03:45 +00001051A. A module can find out its own module name by looking at the
Guido van Rossum24349991994-02-02 14:12:45 +00001052(predefined) global variable __name__. If this has the value
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001053'__main__' you are running as a script.
1054
Guido van Rossuma6c707c1995-01-02 17:32:28 +000010554.10. Q. I have a module in which I want to execute some extra code
1056when it is run as a script. How do I find out whether I am running as
1057a script?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001058
1059A. See the previous question. E.g. if you put the following on the
1060last line of your module, main() is called only when your module is
1061running as a script:
Guido van Rossum24349991994-02-02 14:12:45 +00001062
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001063 if __name__ == '__main__': main()
Guido van Rossum24349991994-02-02 14:12:45 +00001064
Guido van Rossuma6c707c1995-01-02 17:32:28 +000010654.11. Q. I try to run a program from the Demo directory but it fails
1066with ImportError: No module named ...; what gives?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001067
Guido van Rossum061f1821994-10-06 16:03:45 +00001068A. This is probably an optional module (written in C!) which hasn't
1069been configured on your system. This especially happens with modules
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001070like "Tkinter", "stdwin", "gl", "Xt" or "Xm". For Tkinter, STDWIN and
1071many other modules, see Modules/Setup.in for info on how to add these
1072modules to your Python, if it is possible at all. Sometimes you will
1073have to ftp and build another package first (e.g. STDWIN). Sometimes
1074the module only works on specific platforms (e.g. gl only works on SGI
1075machines).
1076
1077NOTE: if the complaint is about "Tkinter" (upper case T) and you have
Guido van Rossumca318ec1996-06-26 19:50:09 +00001078already configured module "tkinter" (lower case t), the solution is
1079*not* to rename tkinter to Tkinter or vice versa. There is probably
1080something wrong with your module search path. Check out the value of
1081sys.path.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001082
Guido van Rossum061f1821994-10-06 16:03:45 +00001083For X-related modules (Xt and Xm) you will have to do more work: they
1084are currently not part of the standard Python distribution. You will
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001085have to ftp the Extensions tar file, e.g.
Guido van Rossum7be34a81995-05-31 15:17:12 +00001086<URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz> and follow
1087the instructions there.
Guido van Rossum061f1821994-10-06 16:03:45 +00001088
1089See also the next question.
1090
10914.12. Q. I have successfully built Python with STDWIN but it can't
1092find some modules (e.g. stdwinevents).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001093
1094A. There's a subdirectory of the library directory named 'stdwin'
1095which should be in the default module search path. There's a line in
1096Modules/Setup(.in) that you have to enable for this purpose --
Guido van Rossum061f1821994-10-06 16:03:45 +00001097unfortunately in the latest release it's not near the other
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001098STDWIN-related lines so it's easy to miss it.
1099
11004.13. Q. What GUI toolkits exist for Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001101
1102A. Depending on what platform(s) you are aiming at, there are several.
1103
Guido van Rossumc458e941996-09-11 15:43:13 +00001104Currently supported solutions:
1105
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001106- There's a neat object-oriented interface to the Tcl/Tk widget set,
Guido van Rossumc458e941996-09-11 15:43:13 +00001107called Tkinter. It is part of the standard Python distribution and
1108well-supported -- all you need to do is build and install Tcl/Tk and
1109enable the _tkinter module and the TKPATH definition in Modules/Setup
1110when building Python. This is probably the easiest to install and
1111use, and the most complete widget set. It is also very likely that in
1112the future the standard Python GUI API will be based on or at least
1113look very much like the Tkinter interface. For more info about Tk,
1114including pointers to the source, see the Tcl/Tk home page
1115<URL:http://www.sunlabs.com/research/tcl/>. Tcl/Tk is now fully
1116portable to the Mac and Windows platforms (NT and 95 only); you need
1117Python 1.4beta3 or later and Tk 4.1patch1 or later.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001118
1119- There's an interface to X11, including the Athena and Motif widget
1120sets (and a few individual widgets, like Mosaic's HTML widget and
Guido van Rossumc458e941996-09-11 15:43:13 +00001121SGI's GL widget) available from
1122<URL:ftp://ftp.python.org/pub/python/src/X-extension.tar.gz>.
1123Support by Sjoerd Mullender <sjoerd@cwi.nl>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001124
Guido van Rossum8a913021996-10-08 17:18:30 +00001125- On top of the X11 interface there's the (recently revived) vpApp
1126toolkit by Per Spilling, now also maintained by Sjoerd Mullender
1127<sjoerd@cwi.nl>. See <URL:ftp://ftp.cwi.nl/pub/sjoerd/vpApp.tar.gz>.
1128
Guido van Rossumc458e941996-09-11 15:43:13 +00001129- The Mac port has a rich and ever-growing set of modules that support
1130the native Mac toolbox calls. See the documentation that comes with
1131the Mac port. See <URL:ftp://ftp.python.org/pub/python/mac>. Support
1132by Jack Jansen <jack@cwi.nl>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001133
Guido van Rossumc458e941996-09-11 15:43:13 +00001134- The NT port supported by Mark Hammond <MHammond@skippinet.com.au>
1135(see question 7.2) includes an interface to the Microsoft Foundation
1136Classes and a Python programming environment using it that's written
1137mostly in Python. See
1138<URL:ftp://ftp.python.org/pub/python/pythonwin/>.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001139
Guido van Rossumc458e941996-09-11 15:43:13 +00001140- There's an object-oriented GUI based on the Microsoft Foundation
1141Classes model called WPY, supported by Jim Ahlstrom <jim@interet.com>.
1142Programs written in WPY run unchanged and with native look and feel on
1143Windows NT/95, Windows 3.1 (using win32s), and on Unix (using Tk).
1144Source and binaries for Windows and Linux are available in
1145<URL:ftp://ftp.python.org/pub/python/wpy/>.
1146
1147Obsolete or minority solutions:
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00001148
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001149- There's an interface to wxWindows. wxWindows is a portable GUI
1150class library written in C++. It supports XView, Motif, MS-Windows as
Guido van Rossumc458e941996-09-11 15:43:13 +00001151targets. There is some support for Macs and CURSES as well.
1152wxWindows preserves the look and feel of the underlying graphics
1153toolkit. See the wxPython WWW page at
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001154<URL:http://www.aiai.ed.ac.uk/~jacs/wx/wxpython/wxpython.html>.
Guido van Rossumc458e941996-09-11 15:43:13 +00001155Support for wxPython (by Harri Pasanen <pa@tekla.fi>) appears
1156to have a low priority.
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001157
Guido van Rossumc458e941996-09-11 15:43:13 +00001158- For SGI IRIX only, there are unsupported interfaces to the complete
1159GL (Graphics Library -- low level but very good 3D capabilities) as
1160well as to FORMS (a buttons-and-sliders-etc package built on top of GL
1161by Mark Overmars -- ftp'able from
1162<URL:ftp://ftp.cs.ruu.nl/pub/SGI/FORMS/>). This is probably also
1163becoming obsolete, as OpenGL takes over.
1164
1165- There's an interface to STDWIN, a platform-independent low-level
1166windowing interface for Mac and X11. This is totally unsupported and
1167rapidly becoming obsolete. The STDWIN sources are at
1168<URL:ftp://ftp.cwi.nl/pub/stdwin/>. (For info about STDWIN 2.0,
1169please refer to Steven Pemberton <steven@cwi.nl> -- I believe it is
1170also dead.)
1171
1172- There once was an interface to WAFE, a Tcl interface to the X11
1173Motif and Athena widget sets. WAFE is at
1174<URL:ftp://ftp.wu-wien.ac.at/pub/src/X11/wafe/>. It's not clear what
1175the status of the Python support is.
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001176
Guido van Rossum0d20cfa1996-07-30 18:53:05 +00001177- (The Fresco port that was mentioned in earlier versions of this FAQ
1178no longer seems to exist. Inquire with Mark Linton.)
Guido van Rossuma8a8d4a1995-03-10 16:19:31 +00001179
Guido van Rossum061f1821994-10-06 16:03:45 +000011804.14. Q. Are there any interfaces to database packages in Python?
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001181
Guido van Rossum8727df41996-09-09 15:16:39 +00001182A. There's a whole collection of them in the contrib area of the ftp
1183server, see <URL:http://www.python.org/ftp/python/contrib/Database/>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001184
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000011854.15. Q. Is it possible to write obfuscated one-liners in Python?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001186
1187A. Yes. See the following three examples, due to Ulf Bartelt:
1188
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001189 # Primes < 1000
1190 print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,
1191 map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))),1),range(2,1000)))
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001192
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001193 # First 10 Fibonacci numbers
1194 print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),
1195 range(10))
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001196
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001197 # Mandelbrot set
1198 print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y,
1199 Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM,
1200 Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro,
1201 i=i,Sx=Sx,F=lambda xc,yc,x,y,k,f=lambda xc,yc,x,y,k,f:(k<=0)or (x*x+y*y
1202 >=4.0) or 1+f(xc,yc,x*x-y*y+xc,2.0*x*y+yc,k-1,f):f(xc,yc,x,y,k,f):chr(
1203 64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy
1204 ))))(-2.1, 0.7, -1.2, 1.2, 30, 80, 24)
1205 # \___ ___/ \___ ___/ | | |__ lines on screen
1206 # V V | |______ columns on screen
1207 # | | |__________ maximum of "iterations"
1208 # | |_________________ range on y axis
1209 # |____________________________ range on x axis
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001210
1211Don't try this at home, kids!
1212
Guido van Rossumb34e8aa1994-09-23 14:20:38 +000012134.16. Q. Is there an equivalent of C's "?:" ternary operator?
Guido van Rossumc24da7c1994-09-23 14:08:41 +00001214
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001215A. Not directly. In many cases you can mimic a?b:c with "a and b or
1216c", but there's a flaw: if b is zero (or empty, or None -- anything
1217that tests false) then c will be selected instead. In many cases you
1218can prove by looking at the code that this can't happen (e.g. because
1219b is a constant or has a type that can never be false), but in general
1220this can be a problem.
1221
Guido van Rossumc458e941996-09-11 15:43:13 +00001222Tim Peters (who wishes it was Steve Majewski) suggested the following
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001223solution: (a and [b] or [c])[0]. Because [b] is a singleton list it
1224is never false, so the wrong path is never taken; then applying [0] to
1225the whole thing gets the b or c that you really wanted. Ugly, but it
1226gets you there in the rare cases where it is really inconvenient to
1227rewrite your code using 'if'.
1228
12294.17. Q. My class defines __del__ but it is not called when I delete the
1230object.
1231
1232A. There are several possible reasons for this.
1233
1234- The del statement does not necessarily call __del__ -- it simply
1235decrements the object's reference count, and if this reaches zero
1236__del__ is called.
1237
1238- If your data structures contain circular links (e.g. a tree where
1239each child has a parent pointer and each parent has a list of
1240children) the reference counts will never go back to zero. You'll
Guido van Rossum061f1821994-10-06 16:03:45 +00001241have to define an explicit close() method which removes those
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001242pointers. Please don't ever call __del__ directly -- __del__ should
Guido van Rossum061f1821994-10-06 16:03:45 +00001243call close() and close() should make sure that it can be called more
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001244than once for the same object.
1245
1246- If the object has ever been a local variable (or argument, which is
1247really the same thing) to a function that caught an expression in an
1248except clause, chances are that a reference to the object still exists
1249in that function's stack frame as contained in the stack trace.
1250Normally, deleting (better: assigning None to) sys.exc_traceback will
1251take care of this. If you a stack was printed for an unhandled
1252exception in an interactive interpreter, delete sys.last_traceback
1253instead.
1254
1255- There is code that deletes all objects when the interpreter exits,
1256but if your Python has been configured to support threads, it is not
1257called (because other threads may still be active). You can define
Guido van Rossum061f1821994-10-06 16:03:45 +00001258your own cleanup function using sys.exitfunc (see question 4.4).
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001259
Guido van Rossum8727df41996-09-09 15:16:39 +00001260- Finally, if your __del__ method raises an exception, this will be
1261ignored. Starting with Python 1.4beta3, a warning message is printed
1262to sys.stderr when this happens.
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001263
12644.18. Q. How do I change the shell environment for programs called
1265using os.popen() or os.system()? Changing os.environ doesn't work.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001266
Guido van Rossum01094e41997-02-17 18:40:02 +00001267A. You must be using either a version of python before 1.4, or on a
1268(rare) system that doesn't have the putenv() library function.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001269
Guido van Rossum01094e41997-02-17 18:40:02 +00001270Before Python 1.4, modifying the environment passed to subshells was
1271left out of the interpreter because there seemed to be no
1272well-established portable way to do it (in particular, some systems,
1273have putenv(), others have setenv(), and some have none at all). As
1274of Python 1.4, almost all Unix systems *do* have putenv(), and so does
1275the Win32 API, and thus the os module was modified so that changes to
1276os.environ are trapped and the corresponding putenv() call is made.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001277
12784.19. Q. What is a class?
1279
1280A. A class is the particular object type that is created by executing
Guido van Rossum796b2591995-01-20 23:05:52 +00001281a class statement. Class objects are used as templates, to create
1282class instance objects, which embody both the data structure and
1283program routines specific to a datatype.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001284
12854.20. Q. What is a method?
1286
1287A. A method is a function that you normally call as
Guido van Rossum796b2591995-01-20 23:05:52 +00001288x.name(arguments...) for some object x. The term is used for methods
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001289of classes and class instances as well as for methods of built-in
Guido van Rossum796b2591995-01-20 23:05:52 +00001290objects. (The latter have a completely different implementation and
1291only share the way their calls look in Python code.) Methods of
1292classes (and class instances) are defined as functions inside the
1293class definition.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001294
12954.21. Q. What is self?
1296
1297A. Self is merely a conventional name for the first argument of a
1298method -- i.e. a function defined inside a class definition. A method
1299defined as meth(self, a, b, c) should be called as x.meth(a, b, c) for
1300some instance x of the class in which the definition occurs;
1301the called method will think it is called as meth(x, a, b, c).
1302
13034.22. Q. What is a unbound method?
1304
1305A. An unbound method is a method defined in a class that is not yet
1306bound to an instance. You get an unbound method if you ask for a
1307class attribute that happens to be a function. You get a bound method
1308if you ask for an instance attribute. A bound method knows which
Guido van Rossum061f1821994-10-06 16:03:45 +00001309instance it belongs to and calling it supplies the instance automatically;
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001310an unbound method only knows which class it wants for its first
1311argument (a derived class is also OK). Calling an unbound method
1312doesn't "magically" derive the first argument from the context -- you
1313have to provide it explicitly.
1314
Guido van Rossuma6c707c1995-01-02 17:32:28 +000013154.23. Q. How do I call a method defined in a base class from a derived
1316class that overrides it?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001317
1318A. If your class definition starts with "class Derived(Base): ..."
1319then you can call method meth defined in Base (or one of Base's base
1320classes) as Base.meth(self, arguments...). Here, Base.meth is an
1321unbound method (see previous question).
1322
Guido van Rossuma6c707c1995-01-02 17:32:28 +000013234.24. Q. How do I call a method from a base class without using the
1324name of the base class?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001325
1326A. DON'T DO THIS. REALLY. I MEAN IT. It appears that you could call
1327self.__class__.__bases__[0].meth(self, arguments...) but this fails when
Guido van Rossum061f1821994-10-06 16:03:45 +00001328a doubly-derived method is derived from your class: for its instances,
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001329self.__class__.__bases__[0] is your class, not its base class -- so
1330(assuming you are doing this from within Derived.meth) you would start
1331a recursive call.
1332
13334.25. Q. How can I organize my code to make it easier to change the base
1334class?
1335
1336A. You could define an alias for the base class, assign the real base
1337class to it before your class definition, and use the alias throughout
1338your class. Then all you have to change is the value assigned to the
1339alias. Incidentally, this trick is also handy if you want to decide
1340dynamically (e.g. depending on availability of resources) which base
1341class to use. Example:
1342
Guido van Rossumc458e941996-09-11 15:43:13 +00001343 BaseAlias = <real base class>
1344 class Derived(BaseAlias):
1345 def meth(self):
1346 BaseAlias.meth(self)
1347 ...
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001348
13494.26. Q. How can I find the methods or attributes of an object?
1350
1351A. This depends on the object type.
1352
1353For an instance x of a user-defined class, instance attributes are
1354found in the dictionary x.__dict__, and methods and attributes defined
1355by its class are found in x.__class__.__bases__[i].__dict__ (for i in
1356range(len(x.__class__.__bases__))). You'll have to walk the tree of
1357base classes to find *all* class methods and attributes.
1358
1359Many, but not all built-in types define a list of their method names
1360in x.__methods__, and if they have data attributes, their names may be
1361found in x.__members__. However this is only a convention.
1362
1363For more information, read the source of the standard (but
1364undocumented) module newdir.
1365
13664.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
1367
1368A. os.read() is a low-level function which takes a file descriptor (a
1369small integer). os.popen() creates a high-level file object -- the
1370same type used for sys.std{in,out,err} and returned by the builtin
1371open() function. Thus, to read n bytes from a pipe p created with
1372os.popen(), you need to use p.read(n).
Guido van Rossuma7925f11994-01-26 10:20:16 +00001373
Guido van Rossum061f1821994-10-06 16:03:45 +000013744.28. Q. How can I create a stand-alone binary from a Python script?
1375
1376The demo script "Demo/scripts/freeze.py" does what you want. (It's
1377actually not a demo but a support tool -- there is some extra code in
1378the interpreter to accommodate it.) It requires that you have the
1379Python build tree handy, complete with all the lib*.a files.
1380
1381This works by scanning your source recursively for import statements
1382(both forms) and looking for the modules on the standard Python path
1383as well as in the source directory (for built-in modules). It then
1384"compiles" the modules written in Python to C code (array initializers
1385that can be turned into code objects using the marshal module) and
1386creates a custom-made config file that only contains those built-in
1387modules which are actually used in the program. It then compiles the
1388generated C code and links it with the rest of the Python interpreter
1389to form a self-contained binary which acts exactly like your script.
1390
Guido van Rossum7be34a81995-05-31 15:17:12 +00001391Hint: the freeze program only works if your script's filename ends in
1392".py".
Guido van Rossum061f1821994-10-06 16:03:45 +00001393
Guido van Rossum7be34a81995-05-31 15:17:12 +000013944.29. Q. What WWW tools are there for Python?
Guido van Rossum061f1821994-10-06 16:03:45 +00001395
Guido van Rossum8727df41996-09-09 15:16:39 +00001396A. See the chapter titled "Internet and WWW" in the Library Reference
1397Manual. There's also a web browser written in Python, called Grail --
Guido van Rossum4662b871996-11-27 15:24:34 +00001398see <URL:http://grail.cnri.reston.va.us/grail/>.
Guido van Rossum061f1821994-10-06 16:03:45 +00001399
1400Steve Miale <smiale@cs.indiana.edu> has written a modular WWW browser
1401called Dancer. An alpha version can be FTP'ed from
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001402<URL:ftp://ftp.cs.indiana.edu/pub/smiale/dancer.tar.gz>. (There are a
1403few articles about Dancer in the (hyper)mail archive
1404<URL:http://www.cwi.nl/~guido/hypermail/python-1994q3/index.html>.)
Guido van Rossum061f1821994-10-06 16:03:45 +00001405
Guido van Rossum7be34a81995-05-31 15:17:12 +000014064.30. Q. How do I run a subprocess with pipes connected to both input
Guido van Rossum796b2591995-01-20 23:05:52 +00001407and output?
1408
1409A. This is really a UNIX question. Also, in general, it is unwise to
1410do so, because you can easily cause a deadlock where the parent
1411process is blocked waiting for output from the child, while the child
1412is blocked waiting for input from the child. This can be caused
1413because the parent expects the child to output more text than it does,
1414or it can be caused by data being stuck in stdio buffers due to lack
1415of flushing. The Python parent can of course explicitly flush the data
1416it sends to the child before it reads any output, but if the child is
1417a naive C program it can easily have been written to never explicitly
1418flush its output, even if it is interactive, since flushing is
1419normally automatic.
1420
1421In many cases, all you really need is to run some data through a
1422command and get the result back. Unless the data is infinite in size,
1423the easiest (and often the most efficient!) way to do this is to write
1424it to a temporary file and run the command with that temporary file as
1425input. The standard module tempfile exports a function mktemp() which
1426generates unique temporary file names.
1427
1428If after reading all of the above you still want to connect two pipes
1429to a subprocess's standard input and output, here's a simple solution,
1430due to Jack Jansen:
1431
Guido van Rossume7d92d51995-10-11 18:06:54 +00001432 import os
1433 import sys
1434 import string
Guido van Rossum796b2591995-01-20 23:05:52 +00001435
Guido van Rossume7d92d51995-10-11 18:06:54 +00001436 MAXFD = 100 # Max number of file descriptors in this system
Guido van Rossum796b2591995-01-20 23:05:52 +00001437
Guido van Rossume7d92d51995-10-11 18:06:54 +00001438 def popen2(cmd):
1439 cmd = string.split(cmd)
1440 p2cread, p2cwrite = os.pipe()
1441 c2pread, c2pwrite = os.pipe()
1442 pid = os.fork()
1443 if pid == 0:
1444 # Child
1445 os.close(0)
1446 os.close(1)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001447 if os.dup(p2cread) != 0:
Guido van Rossume7d92d51995-10-11 18:06:54 +00001448 sys.stderr.write('popen2: bad read dup\n')
Guido van Rossumca318ec1996-06-26 19:50:09 +00001449 if os.dup(c2pwrite) != 1:
Guido van Rossume7d92d51995-10-11 18:06:54 +00001450 sys.stderr.write('popen2: bad write dup\n')
1451 for i in range(3, MAXFD):
1452 try:
1453 os.close(i)
1454 except:
1455 pass
1456 try:
1457 os.execv(cmd[0], cmd)
1458 finally:
1459 os._exit(1)
1460 os.close(p2cread)
1461 tochild = os.fdopen(p2cwrite, 'w')
1462 os.close(c2pwrite)
1463 fromchild = os.fdopen(c2pread, 'r')
1464 return fromchild, tochild
Guido van Rossum796b2591995-01-20 23:05:52 +00001465
1466Note that many interactive programs (e.g. vi) don't work well with
1467pipes substituted for standard input and output. You will have to use
1468pseudo ttys ("ptys") instead of pipes. There is some undocumented
1469code to use these in the library module pty.py -- I'm afraid you're on
Guido van Rossum3fc9d731995-07-25 15:10:56 +00001470your own here.
1471
1472A different answer is a Python interface to Don Libes' "expect"
1473library. A prerelease of this is available on the Python ftp mirror
1474sites in the contrib subdirectory as expy-0.3.tar.gz, e.g.
1475<URL:ftp://ftp.python.org/pub/python/contrib/expy-0.3.tar.gz>.
Guido van Rossum796b2591995-01-20 23:05:52 +00001476
Guido van Rossum7be34a81995-05-31 15:17:12 +000014774.31. Q. How do I call a function if I have the arguments in a tuple?
Guido van Rossumac3f2121995-04-10 11:53:42 +00001478
1479A. Use the built-in function apply(). For instance,
1480
1481 func(1, 2, 3)
1482
1483is equivalent to
1484
1485 args = (1, 2, 3)
1486 apply(func, args)
1487
1488Note that func(args) is not the same -- it calls func() with exactly
1489one argument, the tuple args, instead of three arguments, the integers
14901, 2 and 3.
1491
Guido van Rossum7be34a81995-05-31 15:17:12 +000014924.32. Q. How do I enable font-lock-mode for Python in Emacs?
1493
1494A. Assuming you're already using python-mode and font-lock-mode
1495separately, all you need to do is put this in your .emacs file:
1496
Guido van Rossume7d92d51995-10-11 18:06:54 +00001497 (defun my-python-mode-hook ()
1498 (setq font-lock-keywords python-font-lock-keywords)
1499 (font-lock-mode 1))
1500 (add-hook 'python-mode-hook 'my-python-mode-hook)
Guido van Rossum7be34a81995-05-31 15:17:12 +00001501
15024.33. Q. Is there an inverse to the format operator (a la C's scanf())?
1503
1504A. Not as such.
1505
1506For simple input parsing, the easiest approach is usually to split
1507the line into whitespace-delimited words using string.split(), and to
1508convert decimal strings to numeric values using string.atoi(),
1509string.atol() or string.atof(). (Python's atoi() is 32-bit and its
1510atol() is arbitrary precision.) If you want to use another delimiter
1511than whitespace, use string.splitfield() (possibly combining it with
1512string.strip() which removes surrounding whitespace from a string).
1513
1514For more complicated input parsing, regular expressions (see module
1515regex) are better suited and more powerful than C's scanf().
1516
Guido van Rossumca318ec1996-06-26 19:50:09 +000015174.34. Q. Can I have Tk events handled while waiting for I/O?
1518
1519A. Yes, and you don't even need threads! But you'll have to
1520restructure your I/O code a bit. Tk has the equivalent of Xt's
1521XtAddInput() call, which allows you to register a callback function
1522which will be called from the Tk mainloop when I/O is possible on a
1523file descriptor. Here's what you need:
1524
Guido van Rossumc458e941996-09-11 15:43:13 +00001525 from Tkinter import tkinter
1526 tkinter.createfilehandler(file, mask, callback)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001527
1528The file may be a Python file or socket object (actually, anything
1529with a fileno() method), or an integer file descriptor. The mask is
1530one of the constants tkinter.READABLE or tkinter.WRITABLE. The
1531callback is called as follows:
1532
Guido van Rossumc458e941996-09-11 15:43:13 +00001533 callback(file, mask)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001534
1535You must unregister the callback when you're done, using
1536
Guido van Rossumc458e941996-09-11 15:43:13 +00001537 tkinter.deletefilehandler(file)
Guido van Rossumca318ec1996-06-26 19:50:09 +00001538
1539Note: since you don't know *how many bytes* are available for reading,
1540you can't use the Python file object's read or readline methods, since
1541these will insist on reading a predefined number of bytes. For
1542sockets, the recv() or recvfrom() methods will work fine; for other
1543files, use os.read(file.fileno(), maxbytecount).
1544
15454.35. Q. How do I write a function with output parameters (call by reference)?
1546
1547A. [Mark Lutz] The thing to remember is that arguments are passed by
1548assignment in Python. Since assignment just creates references to
1549objects, there's no alias between an argument name in the caller and
1550callee, and so no call-by-reference per se. But you can simulate it
1551in a number of ways:
1552
15531) By using global variables; but you probably shouldn't :-)
1554
15552) By passing a mutable (changeable in-place) object:
1556
1557 def func1(a):
1558 a[0] = 'new-value' # 'a' references a mutable list
1559 a[1] = a[1] + 1 # changes a shared object
1560
1561 args = ['old-value', 99]
1562 func1(args)
1563 print args[0], args[1] # output: new-value 100
1564
15653) By return a tuple, holding the final values of arguments:
1566
1567 def func2(a, b):
1568 a = 'new-value' # a and b are local names
1569 b = b + 1 # assigned to new objects
1570 return a, b # return new values
1571
1572 x, y = 'old-value', 99
1573 x, y = func2(x, y)
1574 print x, y # output: new-value 100
1575
15764) And other ideas that fall-out from Python's object model. For
1577 instance, it might be clearer to pass in a mutable dictionary:
1578
1579 def func3(args):
1580 args['a'] = 'new-value' # args is a mutable dictionary
1581 args['b'] = args['b'] + 1 # change it in-place
1582
1583 args = {'a':' old-value', 'b': 99}
1584 func3(args)
1585 print args['a'], args['b']
1586
15875) Or bundle-up values in a class instance:
1588
1589 class callByRef:
1590 def __init__(self, **args):
1591 for (key, value) in args.items():
1592 setattr(self, key, value)
1593
1594 def func4(args):
1595 args.a = 'new-value' # args is a mutable callByRef
1596 args.b = args.b + 1 # change object in-place
1597
1598 args = callByRef(a='old-value', b=99)
1599 func4(args)
1600 print args.a, args.b
1601
1602 But there's probably no good reason to get this complicated :-).
1603
1604[Python' author favors solution 3 in most cases.]
1605
Guido van Rossum0d20cfa1996-07-30 18:53:05 +000016064.36. Q. Please explain the rules for local and global variables in Python.
1607
1608A. [Ken Manheimer] In Python, procedure variables are implicitly
1609global, unless they assigned anywhere within the block. In that case
1610they are implicitly local, and you need to explicitly declare them as
1611'global'.
1612
1613Though a bit surprising at first, a moments consideration explains
1614this. On one hand, requirement of 'global' for assigned vars provides
1615a bar against unintended side-effects. On the other hand, if global
1616were required for all global references, you'd be using global all the
1617time. Eg, you'd have to declare as global every reference to a
1618builtin function, or to a component of an imported module. This
1619clutter would defeat the usefulness of the 'global' declaration for
1620identifying side-effects.
1621
16224.37. Q. How can I have modules that mutually import each other?
1623
1624A. Jim Roskind recommends the following order in each module:
1625
1626First: all exports (like globals, functions, and classes that don't
1627need imported bases classes).
1628
1629Then: all import statements.
1630
1631Finally: all active code (including globals that are initialized from
1632imported values).
1633
1634Python's author doesn't like this approach much because the imports
1635appear in a strange place, but has to admit that it works. His
1636recommended strategy is to avoid all uses of "from <module> import *"
1637(so everything from an imported module is referenced as
1638<module>.<name>) and to place all code inside functions.
1639Initializations of global variables and class variables should use
1640constants or built-in functions only.
1641
Guido van Rossum8727df41996-09-09 15:16:39 +000016424.38. Q. How do I copy an object in Python?
1643
1644A. There is no generic copying operation built into Python, however
1645most object types have some way to create a clone. Here's how for the
1646most common objects:
1647
1648- For immutable objects (numbers, strings, tuples), cloning is
1649unnecessary since their value can't change.
1650
1651- For lists (and generally for mutable sequence types), a clone is
1652created by the expression l[:].
1653
1654- For dictionaries, the following function returns a clone:
1655
Guido van Rossumc458e941996-09-11 15:43:13 +00001656 def dictclone(o):
1657 n = {}
1658 for k in o.keys(): n[k] = o[k]
1659 return n
Guido van Rossum8727df41996-09-09 15:16:39 +00001660
1661- Finally, for generic objects, the "copy" module defines two
1662functions for copying objects. copy.copy(x) returns a copy as shown
1663by the above rules. copy.deepcopy(x) also copies the elements of
1664composite objects. See the section on this module in the Library
1665Reference Manual.
1666
16674.39. Q. How to implement persistent objects in Python? (Persistent ==
1668automatically saved to and restored from disk.)
1669
1670A. The library module "pickle" now solves this in a very general way
1671(though you still can't store things like open files, sockests or
1672windows), and the library module "shelve" uses pickle and (g)dbm to
1673create presistent mappings containing arbitrary Python objects.
1674
Guido van Rossuma4e41a81996-10-22 03:00:43 +000016754.40. Q. I try to use __spam and I get an error about _SomeClassName__spam.
1676
1677A. Variables with double leading underscore are "mangled" to provide a
1678simple but effective way to define class private variables. See the
1679chapter "New in Release 1.4" in the Python Tutorial.
1680
Guido van Rossumc59120b1996-11-14 14:10:11 +000016814.41. Q. How do I delete a file? And other file questions.
1682
1683A. Use os.remove(filename) or os.unlink(filename); for documentation,
1684see the posix section of the library manual. They are the same,
1685unlink() is simply the Unix name for this function. In earlier
1686versions of Python, only os.unlink() was available.
1687
1688To remove a directory, use os.rmdir(); use os.mkdir() to create one.
1689
1690To rename a file, use os.rename().
1691
1692To truncate a file, open it using f = open(filename, "w+"), and use
1693f.truncate(offset); offset defaults to the current seek position.
1694There's also os.ftruncate(fd, offset) for files opened with os.open()
1695-- for advanced Unix hacks only.
1696
Guido van Rossum4a908be1997-03-16 18:34:00 +000016974.42. Q. How to modify urllib or httplib to support HTTP/1.1?
1698
1699A. Apply the following patch to httplib.py:
1700
170141c41
1702< replypat = regsub.gsub('\\.', '\\\\.', HTTP_VERSION) + \
1703---
1704> replypat = regsub.gsub('\\.', '\\\\.', 'HTTP/1.[0-9]+') + \
1705
Guido van Rossum14d1c721997-03-19 14:43:28 +000017064.43. Q. Unexplicable syntax errors in compile() or exec.
1707
1708A. When a statement suite (as opposed to an expression) is compiled by
1709compile(), exec or execfile(), it *must* end in a newline. In some
1710cases, when the source ends in an indented block it appears that at
1711least two newlines are required.
Guido van Rossum4a908be1997-03-16 18:34:00 +00001712
Guido van Rossum31ef35b1997-03-25 18:25:20 +000017134.44. Q. How do I convert a string to a number?
1714
1715A. To convert, e.g., the string '144' to the number 144, import the
1716module string and use the string.atoi() function. For floating point
1717numbers, use string.atof(); for long integers, use string.atol(). See
1718the library reference manual section for the string module for more
1719details. While you could use the built-in function eval() instead of
1720any of those, this is not recommended, because someone could pass you
1721a Python expression that might have unwanted side effects (like
1722reformatting your disk).
1723
17244.45. Q. How do I convert a number to a string?
1725
1726A. To convert, e.g., the number 144 to the string '144', use the
1727built-in function repr() or the backquote notation (these are
1728equivalent). If you want a hexadecimal or octal representation, use
1729the built-in functions hex() or oct(), respectively. For fancy
1730formatting, use the % operator on strings, just like C printf formats,
1731e.g. "%04d" % 144 yields '0144' and "%.3f" % (1/3.0) yields '0.333'.
1732See the library reference manual for details.
1733
Guido van Rossum061f1821994-10-06 16:03:45 +00001734
Guido van Rossuma7925f11994-01-26 10:20:16 +000017355. Extending Python
1736===================
1737
17385.1. Q. Can I create my own functions in C?
1739
1740A. Yes, you can create built-in modules containing functions,
Guido van Rossum24349991994-02-02 14:12:45 +00001741variables, exceptions and even new types in C. This is explained in
1742the document "Extending and Embedding the Python Interpreter" (the
1743LaTeX file Doc/ext.tex). Also read the chapter on dynamic loading.
Guido van Rossuma7925f11994-01-26 10:20:16 +00001744
17455.2. Q. Can I create my own functions in C++?
1746
1747A. Yes, using the C-compatibility features found in C++. Basically
1748you place extern "C" { ... } around the Python include files and put
1749extern "C" before each function that is going to be called by the
1750Python interpreter. Global or static C++ objects with constructors
1751are probably not a good idea.
1752
Guido van Rossum7ce61c11994-06-13 15:13:56 +000017535.3. Q. How can I execute arbitrary Python statements from C?
1754
1755A. The highest-level function to do this is run_command() which takes
1756a single string argument which is executed in the context of module
1757__main__ and returns 0 for success and -1 when an exception occurred
1758(including SyntaxError). If you want more control, use run_string();
1759see the source for run_command() in Python/pythonrun.c.
1760
17615.4. Q. How can I evaluate an arbitrary Python expression from C?
1762
1763A. Call the function run_string() from the previous question with the
1764start symbol eval_input; it then parses an expression, evaluates it
1765and returns its value. See exec_eval() in Python/bltinmodule.c.
1766
17675.5. Q. How do I extract C values from a Python object?
1768
1769A. That depends on the object's type. If it's a tuple,
1770gettuplesize(o) returns its length and gettupleitem(o, i) returns its
1771i'th item; similar for lists with getlistsize(o) and getlistitem(o,
1772i). For strings, getstringsize(o) returns its length and
1773getstringvalue(o) a pointer to its value (note that Python strings may
1774contain null bytes so strlen() is not safe). To test which type an
1775object is, first make sure it isn't NULL, and then use
1776is_stringobject(o), is_tupleobject(o), is_listobject(o) etc.
1777
17785.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
1779
1780A. You can't. Use t = newtupleobject(n) instead, and fill it with
1781objects using settupleitem(t, i, o) -- note that this "eats" a
1782reference count of o. Similar for lists with newlistobject(n) and
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001783setlistitem(l, i, o). Note that you *must* set all the tuple items to
1784some value before you pass the tuple to Python code --
1785newtupleobject(n) initializes them to NULL, which isn't a valid Python
1786value.
1787
Guido van Rossum8727df41996-09-09 15:16:39 +000017885.7. Q. How do I call an object's method from C?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001789
1790A. Here's a function (untested) that might become part of the next
1791release in some form. It uses <stdarg.h> to allow passing the
1792argument list on to vmkvalue():
1793
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001794 object *call_method(object *inst, char *methodname, char *format, ...)
1795 {
1796 object *method;
1797 object *args;
1798 object *result;
1799 va_list va;
1800 method = getattr(inst, methodname);
1801 if (method == NULL) return NULL;
1802 va_start(va, format);
1803 args = vmkvalue(format, va);
1804 va_end(va);
1805 if (args == NULL) {
1806 DECREF(method);
1807 return NULL;
1808 }
1809 result = call_object(method, args);
1810 DECREF(method);
1811 DECREF(args);
1812 return result;
1813 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001814
1815This works for any instance that has methods -- whether built-in or
1816user-defined. You are responsible for eventually DECREF'ing the
1817return value.
1818
1819To call, e.g., a file object's "seek" method with arguments 10, 0
1820(assuming the file object pointer is "f"):
1821
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001822 res = call_method(f, "seek", "(OO)", 10, 0);
1823 if (res == NULL) {
1824 ... an exception occurred ...
1825 }
1826 else {
1827 DECREF(res);
1828 }
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001829
1830Note that since call_object() *always* wants a tuple for the argument
1831list, to call a function without arguments, pass "()" for the format,
1832and to call a function with one argument, surround the argument in
1833parentheses, e.g. "(i)".
1834
Guido van Rossum8727df41996-09-09 15:16:39 +000018355.8. Q. How do I catch the output from print_error()?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001836
1837A. (Due to Mark Hammond):
1838
1839* in Python code, define an object that supports the "write()" method.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001840
1841* redirect sys.stdout and sys.stderr to this object.
1842
Guido van Rossum061f1821994-10-06 16:03:45 +00001843* call print_error, or just allow the standard traceback mechanism to
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001844work.
1845
Guido van Rossum061f1821994-10-06 16:03:45 +00001846Then, the output will go wherever your write() method sends it.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001847
Guido van Rossum8727df41996-09-09 15:16:39 +000018485.9. Q. How do I access a module written in Python from C?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001849
1850A. You can get a pointer to the module object as follows:
1851
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001852 module = import_module("<modulename>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001853
1854If the module hasn't been imported yet (i.e. it is not yet present in
1855sys.modules), this initializes the module; otherwise it simply returns
1856the value of sys.modules["<modulename>"]. Note that it doesn't enter
1857the module into any namespace -- it only ensures it has been
1858initialized and is stored in sys.modules.
1859
1860You can then access the module's attributes (i.e. any name defined in
1861the module) as follows:
1862
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001863 attr = getattr(module, "<attrname>");
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00001864
1865Calling setattr(), to assign to variables in the module, also works.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00001866
Guido van Rossum8727df41996-09-09 15:16:39 +000018675.10. Q. How do I interface to C++ objects from Python?
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00001868
Guido van Rossum44adb0c1997-04-11 15:19:35 +00001869A. Depending on your requirements, there are many approaches. To do
1870this manually, begin by reading the "Extending and Embedding" document
1871(Doc/ext.tex, see also <URL:http://www.python.org/doc/>). Realize
1872that for the Python run-time system, there isn't a whole lot of
1873difference between C and C++ -- so the strategy to build a new Python
1874type around a C structure (pointer) type will also work for C++
1875objects.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00001876
Guido van Rossum44adb0c1997-04-11 15:19:35 +00001877A useful automated approach (which also works for C) is SWIG:
Guido van Rossum5d88aa31997-04-11 16:46:56 +00001878<URL:http://www.cs.utah.edu/~beazley/SWIG/>.
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00001879
Guido van Rossuma7925f11994-01-26 10:20:16 +00001880
18816. Python's design
1882==================
1883
Guido van Rossum8727df41996-09-09 15:16:39 +000018846.1. Q. Why isn't there a switch or case statement in Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00001885
1886A. You can do this easily enough with a sequence of
1887if... elif... elif... else. There have been some proposals for switch
Guido van Rossum061f1821994-10-06 16:03:45 +00001888statement syntax, but there is no consensus (yet) on whether and how
Guido van Rossuma7925f11994-01-26 10:20:16 +00001889to do range tests.
1890
Guido van Rossum8727df41996-09-09 15:16:39 +000018916.2. Q. Why does Python use indentation for grouping of statements?
Guido van Rossumc50158e1994-05-31 09:18:50 +00001892
1893A. Basically I believe that using indentation for grouping is
1894extremely elegant and contributes a lot to the clarity of the average
1895Python program. Most people learn to love this feature after a while.
1896Some arguments for it:
1897
1898- Since there are no begin/end brackets there cannot be a disagreement
1899between grouping perceived by the parser and the human reader. I
1900remember long ago seeing a C fragment like this:
1901
Guido van Rossuma6c707c1995-01-02 17:32:28 +00001902 if (x <= y)
1903 x++;
1904 y--;
1905 z++;
Guido van Rossumc50158e1994-05-31 09:18:50 +00001906
1907and staring a long time at it wondering why y was being decremented
1908even for x > y... (And I wasn't a C newbie then either.)
1909
Guido van Rossum7be34a81995-05-31 15:17:12 +00001910- Since there are no begin/end brackets, Python is much less prone to
1911coding-style conflicts. In C there are loads of different ways to
1912place the braces (including the choice whether to place braces around
1913single statements in certain cases, for consistency). If you're used
1914to reading (and writing) code that uses one style, you will feel at
1915least slightly uneasy when reading (or being required to write)
1916another style.
Guido van Rossumc50158e1994-05-31 09:18:50 +00001917
1918- Many coding styles place begin/end brackets on a line by themself.
1919This makes programs considerably longer and wastes valuable screen
1920space, making it harder to get a good overview over a program.
1921Ideally, a function should fit on one basic tty screen (say, 20
1922lines). 20 lines of Python are worth a LOT more than 20 lines of C.
1923This is not solely due to the lack of begin/end brackets (the lack of
1924declarations also helps, and the powerful operations of course), but
1925it certainly helps!
1926
Guido van Rossum8727df41996-09-09 15:16:39 +000019276.3. Q. Why are Python strings immutable?
Guido van Rossum3de27361994-07-25 14:19:33 +00001928
1929A. There are two advantages. One is performance: knowing that a
1930string is immutable makes it easy to lay it out at construction time
1931-- fixed and unchanging storage requirements. (This is also one of
Guido van Rossum061f1821994-10-06 16:03:45 +00001932the reasons for the distinction between tuples and lists.) The
Guido van Rossum3de27361994-07-25 14:19:33 +00001933other is that strings in Python are considered as "elemental" as
1934numbers. No amount of activity will change the value 8 to anything
1935else, and in Python, no amount of activity will change the string
1936"eight" to anything else. (Adapted from Jim Roskind)
1937
Guido van Rossum8727df41996-09-09 15:16:39 +000019386.4. Q. Why don't strings have methods like index() or sort(), like
Guido van Rossum3de27361994-07-25 14:19:33 +00001939lists?
1940
1941A. Good question. Strings currently don't have methods at all
1942(likewise tuples and numbers). Long ago, it seemed unnecessary to
1943implement any of these functions in C, so a standard library module
1944"string" written in Python was created that performs string related
1945operations. Since then, the cry for performance has moved most of
1946them into the built-in module strop (this is imported by module
Guido van Rossumf8c76d01994-08-17 12:19:53 +00001947string, which is still the preferred interface, without loss of
Guido van Rossum3de27361994-07-25 14:19:33 +00001948performance except during initialization). Some of these functions
1949(e.g. index()) could easily be implemented as string methods instead,
1950but others (e.g. sort()) can't, since their interface prescribes that
1951they modify the object, while strings are immutable (see the previous
1952question).
1953
Guido van Rossum8727df41996-09-09 15:16:39 +000019546.5. Q. Why does Python use methods for some functionality
Guido van Rossum3de27361994-07-25 14:19:33 +00001955(e.g. list.index()) but functions for other (e.g. len(list))?
1956
1957A. Functions are used for those operations that are generic for a
1958group of types and which should work even for objects that don't have
1959methods at all (e.g. numbers, strings, tuples). Also, implementing
1960len(), max(), min() as a built-in function is actually less code than
1961implementing them as methods for each type. One can quibble about
1962individual cases but it's really too late to change such things
1963fundamentally now.
1964
Guido van Rossum8727df41996-09-09 15:16:39 +000019656.6. Q. Why can't I derive a class from built-in types (e.g. lists or
Guido van Rossum3de27361994-07-25 14:19:33 +00001966files)?
1967
1968A. This is caused by the relatively late addition of (user-defined)
1969classes to the language -- the implementation framework doesn't easily
1970allow it. See the answer to question 4.2 for a work-around. This
1971*may* be fixed in the (distant) future.
1972
Guido van Rossum8727df41996-09-09 15:16:39 +000019736.7. Q. Why must 'self' be declared and used explicitly in method
Guido van Rossum3de27361994-07-25 14:19:33 +00001974definitions and calls?
1975
1976A. By asking this question you reveal your C++ background. :-)
1977When I added classes, this was (again) the simplest way of
1978implementing methods without too many changes to the interpreter. I
1979borrowed the idea from Modula-3. It turns out to be very useful, for
1980a variety of reasons.
1981
1982First, it makes it more obvious that you are using a method or
1983instance attribute instead of a local variable. Reading "self.x" or
1984"self.meth()" makes it absolutely clear that an instance variable or
1985method is used even if you don't know the class definition by heart.
1986In C++, you can sort of tell by the lack of a local variable
Guido van Rossum061f1821994-10-06 16:03:45 +00001987declaration (assuming globals are rare or easily recognizable) -- but
Guido van Rossum3de27361994-07-25 14:19:33 +00001988in Python, there are no local variable declarations, so you'd have to
1989look up the class definition to be sure.
1990
1991Second, it means that no special syntax is necessary if you want to
1992explicitly reference or call the method from a particular class. In
1993C++, if you want to use a method from base class that is overridden in
1994a derived class, you have to use the :: operator -- in Python you can
1995write baseclass.methodname(self, <argument list>). This is
1996particularly useful for __init__() methods, and in general in cases
1997where a derived class method wants to extend the base class method of
1998the same name and thus has to call the base class method somehow.
1999
2000Lastly, for instance variables, it solves a syntactic problem with
2001assignment: since local variables in Python are (by definition!) those
2002variables to which a value assigned in a function body (and that
2003aren't explicitly declared global), there has to be some way to tell
2004the interpreter that an assignment was meant to assign to an instance
2005variable instead of to a local variable, and it should preferably be
2006syntactic (for efficiency reasons). C++ does this through
2007declarations, but Python doesn't have declarations and it would be a
2008pity having to introduce them just for this purpose. Using the
2009explicit "self.var" solves this nicely. Similarly, for using instance
2010variables, having to write "self.var" means that references to
2011unqualified names inside a method don't have to search the instance's
2012directories.
2013
Guido van Rossum8727df41996-09-09 15:16:39 +000020146.8. Q. Can't you emulate threads in the interpreter instead of
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002015relying on an OS-specific thread implementation?
2016
2017A. Unfortunately, the interpreter pushes at least one C stack frame
2018for each Python stack frame. Also, extensions can call back into
2019Python at almost random moments. Therefore a complete threads
2020implementation requires thread support for C.
2021
Guido van Rossum8727df41996-09-09 15:16:39 +000020226.9. Q. Why can't lambda forms contain statements?
Guido van Rossum061f1821994-10-06 16:03:45 +00002023
2024A. Python lambda forms cannot contain statements because Python's
Guido van Rossum796b2591995-01-20 23:05:52 +00002025syntactic framework can't handle statements nested inside expressions.
Guido van Rossum061f1821994-10-06 16:03:45 +00002026
2027However, in Python, this is not a serious problem. Unlike lambda
2028forms in other languages, where they add functionality, Python lambdas
2029are only a shorthand notation if you're too lazy to define a function.
2030
2031Functions are already first class objects in Python, and can be
2032declared in a local scope. Therefore the only advantage of using a
2033lambda form instead of a locally-defined function is that you'll have
2034to invent a name for the function -- but that's just a local variable
2035to which the function object (which is exactly the same type of object
2036that a lambda form yields) is assigned!
2037
Guido van Rossum8727df41996-09-09 15:16:39 +000020386.10. Q. Why don't lambdas have access to variables defined in the
2039containing scope?
2040
Guido van Rossumc458e941996-09-11 15:43:13 +00002041A. Because they are implemented as ordinary functions.
2042See question 4.5 above.
Guido van Rossum8727df41996-09-09 15:16:39 +00002043
20446.11. Q. Why can't recursive functions be defined inside other functions?
2045
2046A. See question 4.5 above.
2047
Guido van Rossum061f1821994-10-06 16:03:45 +000020486.12. Q. Why is there no more efficient way of iterating over a dictionary
2049than first constructing the list of keys()?
2050
2051A. Have you tried it? I bet it's fast enough for your purposes! In
2052most cases such a list takes only a few percent of the space occupied
2053by the dictionary -- it needs only 4 bytes (the size of a pointer) per
2054key -- a dictionary costs 8 bytes per key plus between 30 and 70
2055percent hash table overhead, plus the space for the keys and values --
2056by necessity all keys are unique objects and a string object (the most
2057common key type) costs at least 18 bytes plus the length of the
2058string. Add to that the values contained in the dictionary, and you
2059see that 4 bytes more per item really isn't that much more memory...
2060
2061A call to dict.keys() makes one fast scan over the dictionary
2062(internally, the iteration function does exist) copying the pointers
2063to the key objects into a pre-allocated list object of the right size.
2064The iteration time isn't lost (since you'll have to iterate anyway --
2065unless in the majority of cases your loop terminates very prematurely
2066(which I doubt since you're getting the keys in random order).
2067
2068I don't expose the dictionary iteration operation to Python
2069programmers because the dictionary shouldn't be modified during the
2070entire iteration -- if it is, there's a very small chance that the
2071dictionary is reorganized because the hash table becomes too full, and
2072then the iteration may miss some items and see others twice. Exactly
2073because this only occurs rarely, it would lead to hidden bugs in
2074programs: it's easy never to have it happen during test runs if you
2075only insert or delete a few items per iteration -- but your users will
2076surely hit upon it sooner or later.
2077
Guido van Rossumb0a2ce51995-08-28 19:41:35 +000020786.13. Q. Can Python be compiled to machine code, C or some other language?
2079
2080A. Not easily. Python's high level data types, dynamic typing of
2081objects and run-time invocation of the interpreter (using eval() or
2082exec) together mean that a "compiled" Python program would probably
2083consist mostly of calls into the Python run-time system, even for
2084seemingly simple operations like "x+1". Thus, the performance gain
2085would probably be minimal.
2086
2087Internally, Python source code is always translated into a "virtual
2088machine code" or "byte code" representation before it is interpreted
2089(by the "Python virtual machine" or "bytecode interpreter"). In order
2090to avoid the overhead of parsing and translating modules that rarely
2091change over and over again, this byte code is written on a file whose
2092name ends in ".pyc" whenever a module is parsed (from a file whose
2093name ends in ".py"). When the corresponding .py file is changed, it
2094is parsed and translated again and the .pyc file is rewritten. There
2095is no performance difference once the .pyc file has been loaded (the
2096bytecode read from the .pyc file is exactly the same as the bytecode
2097created by direct translation). The only difference is that loading
2098code from a .pyc file is faster than parsing and translating a .py
2099file, so the presence of precompiled .pyc files will generally improve
2100start-up time of Python scripts. If desired, the Lib/compileall.py
2101module/script can be used to force creation of valid .pyc files for a
2102given set of modules.
2103
2104If you are looking for a way to translate Python programs in order to
2105distribute them in binary form, without the need to distribute the
2106interpreter and library as well, have a look at the freeze.py script
2107in the Tools/freeze directory. This creates a single binary file
2108incorporating your program, the Python interpreter, and those parts of
2109the Python library that are needed by your program. Of course, the
2110resulting binary will only run on the same type of platform as that
2111used to create it.
2112
2113Hints for proper usage of freeze.py:
2114
2115- the script must be in a file whose name ends in .py
2116
2117- you must have installed Python fully:
2118
Guido van Rossume7d92d51995-10-11 18:06:54 +00002119 make install
2120 make libinstall
2121 make inclinstall
2122 make libainstall
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00002123
Guido van Rossum05151e01995-09-28 13:24:46 +000021246.14. Q. Why doesn't Python use proper garbage collection?
2125
2126A. It's looking less and less likely that Python will ever get
2127"automatic" garbage collection (GC). For one thing, unless this were
2128added to C as a standard feature, it's a portability pain in the ass.
2129And yes, I know about the Xerox library. It has bits of assembler
2130code for *most* *common* platforms. Not for all. And although it is
2131mostly transparent, it isn't completely transparent (when I once
2132linked Python with it, it dumped core).
2133
2134"Proper" GC also becomes a problem when Python gets embedded into
2135other applications. While in a stand-alone Python it may be fine to
2136replace the standard malloc() and free() with versions provided by the
2137GC library, an application embedding Python may want to have its *own*
2138substitute for malloc() and free(), and may not want Python's. Right
2139now, Python works with anything that implements malloc() and free()
2140properly.
2141
2142Besides, the predictability of destructor calls in Python is kind of
2143attractive. With GC, the following code (which is fine in current
2144Python) will run out of file descriptors long before it runs out of
2145memory:
2146
Guido van Rossume7d92d51995-10-11 18:06:54 +00002147 for file in <very long list of files>:
2148 f = open(file)
2149 c = file.read(1)
Guido van Rossum05151e01995-09-28 13:24:46 +00002150
2151Using the current reference counting and destructor scheme, each new
2152assignment to f closes the previous file. Using GC, this is not
2153guaranteed. Sure, you can think of ways to fix this. But it's not
2154off-the-shelf technology.
2155
Guido van Rossuma7925f11994-01-26 10:20:16 +00002156
21577. Using Python on non-UNIX platforms
2158=====================================
2159
Guido van Rossum91f60831994-02-15 15:52:27 +000021607.1. Q. Is there a Mac version of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002161
Guido van Rossume530c581995-04-10 12:32:16 +00002162A. Yes, see the "mac" subdirectory of the distribution sites,
Guido van Rossum7be34a81995-05-31 15:17:12 +00002163e.g. <URL:ftp://ftp.python.org/pub/python/mac/>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002164
Guido van Rossumc458e941996-09-11 15:43:13 +000021657.2. Q. Are there DOS and Windows versions of Python?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002166
Guido van Rossumc458e941996-09-11 15:43:13 +00002167A. Yes. There is a plethora of not-always-compatible versions. See
2168the "pythonwin", "wpy", "nt" and "pc" subdirectories of the
2169distribution sites. A quick comparison:
Guido van Rossuma7925f11994-01-26 10:20:16 +00002170
Guido van Rossumc458e941996-09-11 15:43:13 +00002171PythonWin: Extensive support for the 32-bit native Windows API and GUI
2172building using MFC. Windows NT and Windows 95 only (and Windows
21733.1(1) using win32s, until Microsoft stops supporting it :-( ).
2174<URL:ftp://ftp.python.org/pub/python/pythonwin/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002175
Guido van Rossumc458e941996-09-11 15:43:13 +00002176WPY: Ports to DOS, Windows 3.1(1), Windows 95, Windows NT and OS/2.
2177Also contains a GUI package that offers portability between Windows
2178(not DOS) and Unix, and native look and feel on both.
2179<URL:ftp://ftp.python.org/pub/python/wpy/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002180
Guido van Rossumc458e941996-09-11 15:43:13 +00002181NT: Basic ports built straight from the 1.4 distribution for Windows
218295 and Windows NT. This will eventually provide core support for
2183both PythonWin and WPY on all 32-bit Microsoft platforms.
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002184<URL:ftp://ftp.python.org/pub/python/nt/>.
2185
Guido van Rossumc458e941996-09-11 15:43:13 +00002186PC: Old, unsupported ports to DOS, Windows 3.1(1) and OS/2.
2187<URL:ftp://ftp.python.org/pub/python/pc/>.
Guido van Rossum91f60831994-02-15 15:52:27 +00002188
Guido van Rossumc458e941996-09-11 15:43:13 +000021897.3. Q. Is there an OS/2 version of Python?
Guido van Rossum061f1821994-10-06 16:03:45 +00002190
Guido van Rossumc458e941996-09-11 15:43:13 +00002191A. Yes, see the "pc" and "wpy" subdirectory of the distribution sites
2192(see above).
Guido van Rossum061f1821994-10-06 16:03:45 +00002193
Guido van Rossumc458e941996-09-11 15:43:13 +000021947.4. Q. Is there a VMS version of Python?
Guido van Rossume530c581995-04-10 12:32:16 +00002195
Guido van Rossum3fc9d731995-07-25 15:10:56 +00002196A. Donn Cave <donn@cac.washington.edu> did a partial port. The
2197results of his efforts are on public display in
Guido van Rossumbf8e7d51995-08-28 03:09:13 +00002198<<URL:ftp://ftp.python.org/pub/python/contrib/vms.tar.gz/>. Someone
2199else is working on a more complete port, for details watch the list.
Guido van Rossume530c581995-04-10 12:32:16 +00002200
Guido van Rossumc458e941996-09-11 15:43:13 +000022017.5. Q. What about IBM mainframes, or other non-UNIX platforms?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002202
Guido van Rossumb0a2ce51995-08-28 19:41:35 +00002203A. I haven't heard about these, except I remember hearing about an
2204OS/9 port and a port to Vxworks (both operating systems for embedded
2205systems). If you're interested in any of this, go directly to the
2206newsgroup and ask there, you may find exactly what you need. For
2207example, a port to MPE/iX 5.0 on HP3000 computers was just announced,
2208see <URL:http://www.allegro.com/software/>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002209
Guido van Rossumc458e941996-09-11 15:43:13 +000022107.6. Q. Where are the source or Makefiles for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002211
Guido van Rossume530c581995-04-10 12:32:16 +00002212A. The standard sources can (almost) be used. Additional sources can
2213be found in the platform-specific subdirectories of the distribution.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002214
Guido van Rossumc458e941996-09-11 15:43:13 +000022157.7. Q. What is the status and support for the non-UNIX versions?
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002216
2217A. I don't have access to most of these platforms, so in general I am
2218dependent on material submitted by volunteers(*). However I strive to
2219integrate all changes needed to get it to compile on a particular
2220platform back into the standard sources, so porting of the next
2221version to the various non-UNIX platforms should be easy.
2222
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002223(*) For the Macintosh, that volunteer is me, with help from Jack
2224Jansen <jack@cwi.nl>.
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002225
Guido van Rossumc458e941996-09-11 15:43:13 +000022267.8. Q. I have a PC version but it appears to be only a binary.
Guido van Rossum7ce61c11994-06-13 15:13:56 +00002227Where's the library?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002228
2229A. You still need to copy the files from the distribution directory
Guido van Rossum91f60831994-02-15 15:52:27 +00002230"python/Lib" to your system. If you don't have the full distribution,
Guido van Rossume530c581995-04-10 12:32:16 +00002231you can get the file lib<version>.tar.gz from most ftp sites carrying
2232Python; this is a subset of the distribution containing just those
Guido van Rossum7be34a81995-05-31 15:17:12 +00002233files, e.g. <URL:ftp://ftp.python.org/pub/python/src/lib1.1.tar.gz>.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002234
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002235Once you have installed the library, you need to point sys.path to it.
2236Assuming the library is in C:\misc\python\lib, the following commands
2237will point your Python interpreter to it (note the doubled backslashes
2238-- you can also use single forward slashes instead):
2239
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002240 >>> import sys
2241 >>> sys.path.insert(0, 'C:\\misc\\python\\lib')
2242 >>>
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002243
2244For a more permanent effect, set the environment variable PYTHONPATH,
2245as follows (talking to a DOS prompt):
2246
Guido van Rossuma6c707c1995-01-02 17:32:28 +00002247 C> SET PYTHONPATH=C:\misc\python\lib
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002248
Guido van Rossumc458e941996-09-11 15:43:13 +000022497.9. Q. Where's the documentation for the Mac or PC version?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002250
Guido van Rossume530c581995-04-10 12:32:16 +00002251A. The documentation for the Unix version also applies to the Mac and
2252PC versions. Where applicable, differences are indicated in the text.
Guido van Rossuma7925f11994-01-26 10:20:16 +00002253
Guido van Rossumc458e941996-09-11 15:43:13 +000022547.10. Q. The Mac (PC) version doesn't seem to have any facilities for
Guido van Rossum91f60831994-02-15 15:52:27 +00002255creating or editing programs apart from entering it interactively, and
2256there seems to be no way to save code that was entered interactively.
2257How do I create a Python program on the Mac (PC)?
Guido van Rossuma7925f11994-01-26 10:20:16 +00002258
Guido van Rossumb34e8aa1994-09-23 14:20:38 +00002259A. Use an external editor. On the Mac, BBEdit seems to be a popular
2260no-frills text editor. I work like this: start the interpreter; edit
2261a module file using BBedit; import and test it in the interpreter;
2262edit again in BBedit; then use the built-in function reload() to
2263re-read the imported module; etc.
Guido van Rossum5333c5d1994-04-11 11:06:22 +00002264
2265Regarding the same question for the PC, Kurt Wm. Hemr writes: "While
2266anyone with a pulse could certainly figure out how to do the same on
2267MS-Windows, I would recommend the NotGNU Emacs clone for MS-Windows.
2268Not only can you easily resave and "reload()" from Python after making
2269changes, but since WinNot auto-copies to the clipboard any text you
2270select, you can simply select the entire procedure (function) which
2271you changed in WinNot, switch to QWPython, and shift-ins to reenter
2272the changed program unit."