1 Subject: FAQ: Python -- an object-oriented language
2 Newsgroups: comp.lang.python,comp.answers,news.answers
3 Followup-to: comp.lang.python
4 From: guido@cwi.nl (Guido van Rossum)
5 Reply-to: guido@cnri.reston.va.us (Guido van Rossum)
6 Expires: Wed, 1 Nov 1995 00:00:00 GMT
7 Supersedes: <DFMAv8.3Hp@cwi.nl>
8 Approved: news-answers-request@MIT.Edu
10 Archive-name: python-faq/part1
11 Submitted-by: Guido van Rossum <guido@cwi.nl>
13 Last-modified: 11 October 1995
15 This article contains answers to Frequently Asked Questions about
16 Python (an object-oriented interpreted programming language -- see
17 the answer to question 1.1 for a short overview).
19 Copyright 1993-1995 Guido van Rossum. Unchanged electronic
20 redistribution of this FAQ is allowed. Printed redistribution only
21 with permission of the author. No warranties.
26 1895 Preston White Drive
29 Email: <guido@python.org>, <guido@cnri.reston.va.us>, <guido@cwi.nl>
31 The latest version of this FAQ is available by anonymous ftp from
32 <URL:ftp://ftp.python.org/pub/doc/FAQ>. It will also be posted
33 regularly to the newsgroups comp.answers <URL:news:comp.answers> and
34 comp.lang.python <URL:news:comp.lang.python>.
36 Many FAQs, including this one, are available by anonymous ftp
37 <URL:ftp://rtfm.mit.edu/pub/usenet/news.answers/>. The name under
38 which a FAQ is archived appears in the Archive-name line at the top of
39 the article. This FAQ is archived as python-faq/part1
40 <URL:ftp://rtfm.mit.edu/pub/usenet/news.answers/python-faq/part1>.
42 There's a mail server on that machine which will send you files from
43 the archive by e-mail if you have no ftp access. You send a e-mail
44 message to <mail-server@rtfm.mit.edu> containing the single word help
45 in the message body to receive instructions.
47 This FAQ is divided in the following chapters:
49 1. General information and availability
50 2. Python in the real world
51 3. Building Python and Other Known Bugs
52 4. Programming in Python
55 7. Using Python on non-UNIX platforms
57 To find the start of a particular chapter, search for the chapter number
58 followed by a dot and a space at the beginning of a line (e.g. to
59 find chapter 4 in vi, type /^4\. /).
61 Here's an overview of the questions per chapter:
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?
68 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?
70 1.7. Q. Is there a WWW page devoted to Python?
71 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?
77 1.14. Q. Are there copyright restrictions on the use of Python?
78 1.15. Q. Why was Python created in the first place?
79 1.16. Q. What happened to Tim Peters (the author of python-mode.el, and many
80 entertaining and enlightening pieces of Python email)?
82 2. Python in the real world
83 2.1. Q. How many people are using Python?
84 2.2. Q. Have any significant projects been done in Python?
85 2.3. Q. Are there any commercial projects going on using Python?
86 2.4. Q. How stable is Python?
87 2.5. Q. When will the next version be released?
88 2.6. Q. What new developments are expected for Python in the future?
89 2.7. Q. Is it reasonable to propose incompatible changes to Python?
90 2.8. Q. What is the future of Python?
91 2.9. Q. What is the PSA, anyway?
92 2.10. Q. How do I join the PSA?
93 2.11. Q. What are the benefits of joining the PSA?
95 3. Building Python and Other Known Bugs
96 3.1. Q. Is there a test set?
97 3.2. Q. When running the test set, I get complaints about floating point
98 operations, but when playing with floating point operations I cannot
99 find anything wrong with them.
100 3.3. Q. Link errors after rerunning the configure script.
101 3.4. Q. The python interpreter complains about options passed to a
102 script (after the script name).
103 3.5. Q. When building on the SGI, make tries to run python to create
104 glmodule.c, but python hasn't been built or installed yet.
105 3.6. Q. Python built with gcc for the DEC Alpha doesn't work.
106 3.7. Q. I use VPATH but some targets are built in the source directory.
107 3.8. Q. Trouble building or linking with the GNU readline library.
108 3.9. Q. Trouble building Python on Linux.
109 3.10. Q. Trouble with prototypes on Ultrix.
110 3.11. Q. Trouble with posix.listdir on NeXTSTEP 3.2.
111 3.12. Q. Other trouble building Python on platform X.
112 3.13. Q. How to configure dynamic loading on Lixux.
113 3.14. Q. Under Solaris 2.x, using GCC, how do I use shared libraries?
114 3.15. Q. Errors when linking with a shared library containing C++ code.
115 3.16. Q. Tk menus or radiobuttons don't work properly in Python 1.2.
116 3.17. Q. I built with _tkintermodule.c enabled but get "Tkinter not found".
117 3.18. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
118 3.19. Q. Tk doesn't work right on DEC Alpha.
120 4. Programming in Python
121 4.1. Q. Is there a source code level debugger with breakpoints, step,
123 4.2. Q. Can I create an object class with some methods implemented in
124 C and others in Python (e.g. through inheritance)? (Also phrased as:
125 Can I use a built-in type as base class?)
126 4.3. Q. Is there a curses/termcap package for Python?
127 4.4. Q. Is there an equivalent to C's onexit() in Python?
128 4.5. Q. When I define a function nested inside another function, the
129 nested function seemingly can't access the local variables of the
130 outer function. What is going on? How do I pass local data to a
132 4.6. Q. How do I iterate over a sequence in reverse order?
133 4.7. Q. My program is too slow. How do I speed it up?
134 4.8. Q. When I have imported a module, then edit it, and import it
135 again (into the same Python process), the changes don't seem to take
136 place. What is going on?
137 4.9. Q. How do I find the current module name?
138 4.10. Q. I have a module in which I want to execute some extra code
139 when it is run as a script. How do I find out whether I am running as
141 4.11. Q. I try to run a program from the Demo directory but it fails
142 with ImportError: No module named ...; what gives?
143 4.12. Q. I have successfully built Python with STDWIN but it can't
144 find some modules (e.g. stdwinevents).
145 4.13. Q. What GUI toolkits exist for Python?
146 4.14. Q. Are there any interfaces to database packages in Python?
147 4.15. Q. Is it possible to write obfuscated one-liners in Python?
148 4.16. Q. Is there an equivalent of C's "?:" ternary operator?
149 4.17. Q. My class defines __del__ but it is not called when I delete the
151 4.18. Q. How do I change the shell environment for programs called
152 using os.popen() or os.system()? Changing os.environ doesn't work.
153 4.19. Q. What is a class?
154 4.20. Q. What is a method?
155 4.21. Q. What is self?
156 4.22. Q. What is a unbound method?
157 4.23. Q. How do I call a method defined in a base class from a derived
158 class that overrides it?
159 4.24. Q. How do I call a method from a base class without using the
160 name of the base class?
161 4.25. Q. How can I organize my code to make it easier to change the base
163 4.26. Q. How can I find the methods or attributes of an object?
164 4.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
165 4.28. Q. How can I create a stand-alone binary from a Python script?
166 4.29. Q. What WWW tools are there for Python?
167 4.30. Q. How do I run a subprocess with pipes connected to both input
169 4.31. Q. How do I call a function if I have the arguments in a tuple?
170 4.32. Q. How do I enable font-lock-mode for Python in Emacs?
171 4.33. Q. Is there an inverse to the format operator (a la C's scanf())?
174 5.1. Q. Can I create my own functions in C?
175 5.2. Q. Can I create my own functions in C++?
176 5.3. Q. How can I execute arbitrary Python statements from C?
177 5.4. Q. How can I evaluate an arbitrary Python expression from C?
178 5.5. Q. How do I extract C values from a Python object?
179 5.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
180 5.7. Q. What happened to mktuple(), featured in an example in the
182 5.8. Q. How do I call an object's method from C?
183 5.9. Q. How do I catch the output from print_error()?
184 5.10. Q. How do I access a module written in Python from C?
185 5.11. Q. How do I interface to C++ objects from Python?
188 6.1. Q. Why isn't there a generic copying operation for objects in Python?
189 6.2. Q. Why isn't there a generic way to implement persistent objects
190 in Python? (Persistent == automatically saved to and restored from
192 6.3. Q. Why isn't there a switch or case statement in Python?
193 6.4. Q. Why does Python use indentation for grouping of statements?
194 6.5. Q. Why are Python strings immutable?
195 6.6. Q. Why don't strings have methods like index() or sort(), like
197 6.7. Q. Why does Python use methods for some functionality
198 (e.g. list.index()) but functions for other (e.g. len(list))?
199 6.8. Q. Why can't I derive a class from built-in types (e.g. lists or
201 6.9. Q. Why must 'self' be declared and used explicitly in method
202 definitions and calls?
203 6.10. Q. Can't you emulate threads in the interpreter instead of
204 relying on an OS-specific thread implementation?
205 6.11. Q. Why can't lambda forms contain statements?
206 6.12. Q. Why is there no more efficient way of iterating over a dictionary
207 than first constructing the list of keys()?
208 6.13. Q. Can Python be compiled to machine code, C or some other language?
209 6.14. Q. Why doesn't Python use proper garbage collection?
211 7. Using Python on non-UNIX platforms
212 7.1. Q. Is there a Mac version of Python?
213 7.2. Q. Is there a DOS version of Python?
214 7.3. Q. Is there a Windows 3.1(1) version of Python?
215 7.4. Q. Is there a Windows NT version of Python?
216 7.5. Q. Is there a Windows 95 version of Python?
217 7.6. Q. Is there an OS/2 version of Python?
218 7.7. Q. Is there a VMS version of Python?
219 7.8. Q. What about IBM mainframes, or other non-UNIX platforms?
220 7.9. Q. Where are the source or Makefiles for the non-UNIX versions?
221 7.10. Q. What is the status and support for the non-UNIX versions?
222 7.11. Q. I have a PC version but it appears to be only a binary.
224 7.12. Q. Where's the documentation for the Mac or PC version?
225 7.13. Q. The Mac (PC) version doesn't seem to have any facilities for
226 creating or editing programs apart from entering it interactively, and
227 there seems to be no way to save code that was entered interactively.
228 How do I create a Python program on the Mac (PC)?
230 To find a particular question, search for the question number followed
231 by a dot, a space, and a Q at the beginning of a line (e.g. to find
232 question 4.2 in vi, type /^4\.2\. Q/).
235 1. General information and availability
236 =======================================
238 1.1. Q. What is Python?
240 A. Python is an interpreted, interactive, object-oriented programming
241 language. It incorporates modules, exceptions, dynamic typing, very
242 high level dynamic data types, and classes. Python combines
243 remarkable power with very clear syntax. It has interfaces to many
244 system calls and libraries, as well as to various window systems, and
245 is extensible in C or C++. It is also usable as an extension language
246 for applications that need a programmable interface. Finally, Python
247 is portable: it runs on many brands of UNIX, on the Mac, and on PCs
248 under MS-DOS, Windows, Windows NT, and OS/2.
250 To find out more, the best thing to do is to start reading the
251 tutorial from the documentation set (see a few questions further
254 1.2. Q. Why is it called Python?
256 A. Apart from being a computer scientist, I'm also a fan of "Monty
257 Python's Flying Circus" (a BBC comedy series from the seventies, in
258 the -- unlikely -- case you didn't know). It occurred to me one day
259 that I needed a name that was short, unique, and slightly mysterious.
260 And I happened to be reading some scripts from the series at the
261 time... So then I decided to call my language Python. But Python is
262 not a joke. And don't you associate it with dangerous reptiles
263 either! (If you need an icon, use an image of the 16-ton weight from
264 the TV series or of a can of SPAM :-)
266 1.3. Q. How do I obtain a copy of the Python source?
268 A. The latest complete Python source distribution is always available
269 by anonymous ftp, e.g.
270 <URL:ftp://ftp.python.org/pub/python/src/python1.2.tar.gz>. It is a
271 gzipped tar file containing the complete C source, LaTeX
272 documentation, Python library modules, example programs, and several
273 useful pieces of freely distributable software. This will compile and
274 run out of the box on most UNIX platforms. (See section 7 for
275 non-UNIX information.)
277 Occasionally a set of patches is issued which has to be applied using
278 the patch program. These patches are placed in the same directory,
279 e.g. <URL:ftp://ftp.python.org/pub/python/src/patch1.1.1>. (At the time
280 of writing, no patches exist for 1.2.)
282 An index of said ftp directory can be found in the file INDEX. An
283 HTML version of the index can be found in the file index.html,
284 <URL:ftp://ftp.python.org/pub/python/index.html>.
286 1.4. Q. How do I get documentation on Python?
288 A. The LaTeX source for the documentation is part of the source
289 distribution. If you don't have LaTeX, the latest Python
290 documentation set is always available by anonymous ftp, e.g.
291 <URL:ftp://ftp.python.org/pub/python/doc/postscript.tar.gz>. It is a
292 gzipped tar file containing PostScript files of the reference manual,
293 the library manual, and the tutorial. Note that the library manual is
294 the most important one of the set, as much of Python's power stems
295 from the standard or built-in types, functions and modules, all of
296 which are described here. PostScript for a high-level description of
297 Python is in the file nluug-paper.ps (a separate file on the ftp
300 1.5. Q. Are there other ftp sites that mirror the Python distribution?
302 A. The following anonymous ftp sites keep mirrors of the Python
307 <URL:ftp://ftp.python.org/pub/python/>
308 <URL:ftp://gatekeeper.dec.com/pub/plan/python/>
309 <URL:ftp://ftp.uu.net/languages/python/>
310 <URL:ftp://ftp.wustl.edu/graphics/graphics/sgi-stuff/python/>
311 <URL:ftp://ftp.sterling.com/programming/languages/python/>
312 <URL:ftp://uiarchive.cso.uiuc.edu/pub/lang/python/>
313 <URL:ftp://ftp.pht.com/mirrors/python/python/>
317 <URL:ftp://ftp.cwi.nl/pub/python/>
318 <URL:ftp://ftp.funet.fi/pub/languages/python/>
319 <URL:ftp://ftp.sunet.se/pub/lang/python/>
320 <URL:ftp://unix.hensa.ac.uk/mirrors/uunet/languages/python/>
321 <URL:ftp://ftp.ibp.fr/pub/python/>
322 <URL:ftp://ftp.switch.ch/software/sources/python/>
323 <URL:ftp://ftp.informatik.tu-muenchen.de/pub/comp/programming/languages/python/>
327 <URL:ftp://ftp.dstc.edu.au/pub/python/>
329 Or try archie on the string "python".
331 1.6. Q. Is there a newsgroup or mailing list devoted to Python?
333 A. There is a newsgroup, comp.lang.python <URL:news:comp.lang.python>,
334 and a mailing list. The newsgroup and mailing list are gatewayed into
335 each other -- if you can read news it's unnecessary to subscribe to
336 the mailing list. Send e-mail to <python-list-request@cwi.nl> to
337 (un)subscribe to the mailing list. Hypermail archives of (nearly)
338 everything posted to the mailing list (and thus the newsgroup) are
339 available on our WWW server,
340 <URL:http://www.cwi.nl/~guido/hypermail/index.html>. The raw archives
341 are also available by ftp, e.g.
342 <URL:ftp://ftp.python.org/pub/python/mail/mailinglist.gz>. The
343 uncompressed versions of these files can be read with the standard
344 UNIX Mail program ("Mail -f file") or with nn ("nn file"). To read
345 them using MH, you could use "inc -file file". (The archival service
346 has stopped archiving new articles around the end of April 1995. I
347 hope to revive it on the PSA server www.python.org sometime in the
350 1.7. Q. Is there a WWW page devoted to Python?
352 A. Yes, <URL:http://www.python.org/> is the official Python home page.
353 At the time of writing, this page is not yet completely operational;
354 you may have a look at the old Python home page:
355 <URL:http://www.cwi.nl/~guido/Python.html> or at the U.S. copy:
356 <URL:http://www.python.org/~guido/Python.html>.
358 1.8. Q. Is the Python documentation available on the WWW?
360 A. Yes, see <URL:http://www.python.org/> (Python's home page). It
361 contains pointers to hypertext versions of the whole documentation set
362 (as hypertext, not just PostScript).
364 If you wish to browse this collection of HTML files on your own
365 machine, it is available bundled up by anonymous ftp,
366 e.g. <URL:ftp://ftp.python.org/pub/python/doc/html.tar.gz>.
368 An Emacs-INFO set containing the library manual is also available by
369 ftp, e.g. <URL:ftp://ftp.python.org/pub/python/doc/lib-info.tar.gz>.
371 1.9. Q. Is there a book on Python, or will there be one out soon?
373 A. Mark Lutz is writing a Python book for O'Reilly and Associates, to
374 be published early 1996. See the outline (in PostScript):
375 <URL:http://www.python.org/workshops/1995-05/outlinep.eps>.
377 1.10. Q. Are there any published articles about Python that I can quote?
379 A. So far the only refereed and published article that describes
380 Python in some detail is:
382 Guido van Rossum and Jelke de Boer, "Interactively Testing Remote
383 Servers Using the Python Programming Language", CWI Quarterly, Volume
384 4, Issue 4 (December 1991), Amsterdam, pp 283-303.
386 LaTeX source for this paper is available as part of the Python source
389 See also the next section (supposedly Aaron Watters' paper has been
392 1.11. Q. Are there short introductory papers or talks on Python?
394 A. A recent, very entertaining introduction to Python is the tutorial by
395 Aaron Watters in UnixWorld Online:
397 Aaron R. Watters: "The What, Why, Who, and Where of Python",
398 <URL:http://www.wcmh.com/uworld/archives/95/tutorial/005.html>
402 Guido van Rossum, "An Introduction to Python for UNIX/C
403 Programmers", in the proceedings of the NLUUG najaarsconferentie
404 1993 (dutch UNIX users group meeting November 1993).
406 PostScript for this paper and for the slides used for the accompanying
407 presentation is available by ftp as
408 <URL:ftp://ftp.python.org/pub/python/doc/nluug-paper.ps> and
409 <URL:ftp://ftp.python.org/pub/python/doc/nluug-slides.ps>, respectively.
411 Slides for a talk on Python that I gave at the Usenix Symposium on
412 Very High Level Languages in Santa Fe, NM, USA in October 1994 are
413 available as <URL:ftp://ftp.python.org/pub/python/doc/vhll-slides.ps>.
415 1.12. Q. How does the Python version numbering scheme work?
417 A. Python versions are numbered A.B.C or A.B. A is the major version
418 number -- it is only incremented for major changes in functionality or
419 source structure. B is the minor version number, incremented for less
420 earth-shattering changes to a release. C is the patchlevel -- it is
421 incremented for each new patch release. Not all releases have patch
422 releases. Note that in the past, patches have added significant
423 changes; in fact the changeover from 0.9.9 to 1.0.0 was the first time
424 that either A or B changed!
426 Beta versions have an additional suffix of "-beta-N" for some small
427 number N. Note that (for instance) all versions labeled 1.2-beta-N
428 *precede* the actual release of 1.2. 1.3b1 is short for 1.3-beta-1.
430 1.13. Q. How do I get a beta test version of Python?
432 A. If there are any beta releases, they are published in the normal
433 source directory (e.g. <URL:ftp://ftp.python.org/pub/python/src/>).
435 1.14. Q. Are there copyright restrictions on the use of Python?
437 A. Hardly. You can do anything you want with the source, as long as
438 you leave the copyrights in, and display those copyrights in any
439 documentation about Python that you produce. Also, don't use the
440 author's institute's name in publicity without prior written
441 permission, and don't hold them responsible for anything (read the
442 actual copyright for a precise legal wording).
444 In particular, if you honor the copyright rules, it's OK to use Python
445 for commercial use, to sell copies of Python in source or binary form,
446 or to sell products that enhance Python or incorporate Python (or part
447 of it) in some form. I would still like to know about all commercial
450 1.15. Q. Why was Python created in the first place?
452 A. Here's a *very* brief summary of what got me started:
454 - I had extensive experience with implementing an interpreted language
455 in the ABC group at CWI, and from working with this group I had
456 learned a lot about language design. This is the origin of many
457 Python features, including the use of indentation for statement
458 grouping and the inclusion of very-high-level data types (although the
459 details are all different in Python).
461 - I had a number of gripes about the ABC language, but also liked many
462 of its features. It was impossible to extend the ABC language (or its
463 implementation) to remedy my complaints -- in fact its lack of
464 extensibility was one of its biggest problems.
466 - I had some experience with using Modula-2+ and talked with the
467 designers of Modula-3 (and read the M3 report). M3 is the origin of
468 the syntax and semantics used for exceptions, and some other Python
471 - I was working in the Amoeba distributed operating system group at
472 CWI. We needed a better way to do system administration than by
473 writing either C programs or Bourne shell scripts, since Amoeba had
474 its own system call interface which wasn't easily accessible from the
475 Bourne shell. My experience with error handling in Amoeba made me
476 acutely aware of the importance of exceptions as a programming
479 - It occurred to me that a scripting language with a syntax like ABC
480 but with access to the Amoeba system calls would fill the need. I
481 realized that it would be foolish to write an Amoeba-specific
482 language, so I decided that I needed a language that was generally
485 - During the 1989 Christmas holidays, I had a lot of time on my hand,
486 so I decided to give it a try. During the next year, while still
487 mostly working on it in my own time, Python was used in the Amoeba
488 project with increasing success, and the feedback from colleagues made
489 me add many early improvements.
491 - In February 1991, after just over a year of development, I decided
492 to post to USENET. The rest is in the Misc/HISTORY file.
494 1.16. Q. What happened to Tim Peters (the author of python-mode.el, and many
495 entertaining and enlightening pieces of Python email)?
497 A. He worked at KSR (Kendall Square Research, a start-up building a
498 new kind of massively parallel processor). When KSR folded down a
499 couple of years ago, Tim lost his email access. He hasn't surfaced
500 on the net since then.
502 Missing-him-too-ly yours...
504 PS: support for Python's Emacs mode (Misc/python-mode.el in the
505 distribution) has been taken up by Barry Warsaw. Questions about it
506 should be mailed to <python-mode@python.org>.
509 2. Python in the real world
510 ===========================
512 2.1. Q. How many people are using Python?
514 A. I don't know, but the maximum number of simultaneous subscriptions
515 to the Python mailing list before it was gatewayed into the newsgroup
516 was about 180 (several of which were local redistribution lists). I
517 believe that many active Python users don't bother to subscribe to the
518 list, and now that there's a newsgroup the mailing list subscription
519 is even less meaningful. I see new names on the newsgroup all the
520 time and my best guess is that there are currently at least several
523 Another statistic is the number of accesses to the Python WWW server.
524 Have a look at <URL:http://www.python.org/stats/>.
526 2.2. Q. Have any significant projects been done in Python?
528 A. Here at CWI (the home of Python), we have written a 20,000 line
529 authoring environment for transportable hypermedia presentations, a
530 5,000 line multimedia teleconferencing tool, as well as many many
533 The University of Virginia uses Python to control a virtual reality
534 engine. Contact: Matt Conway <conway@virginia.edu>.
536 The ILU project at Xerox PARC can generate Python glue for ILU
537 interfaces. See <URL:ftp://ftp.parc.xerox.com/pub/ilu/ilu.html>.
539 The University of California, Irvine uses a student administration
540 system called TELE-Vision written entirely in Python. Contact: Ray
541 Price <rlprice@uci.edu>.
543 See also the next question.
545 If you have done a significant project in Python that you'd like to be
546 included in the list above, send me email!
548 2.3. Q. Are there any commercial projects going on using Python?
550 A. Several companies have revealed to me that they are planning or
551 considering use of Python in a future product.
553 Sunrise Software has a product out using Python -- they use Python
554 for a GUI management application and an SNMP network management
555 application. Contact: <info@sunrise.com>.
557 Infoseek uses Python to implement their commercial WWW information
558 retrieval service <URL:http://www.infoseek.com/>. Contact:
561 Paul Everitt of Connecting Minds is planning a Lotus Notes gateway.
562 Contact: <Paul.Everitt@cminds.com>. Or see their WWW server
563 <URL:http://www.cminds.com/>.
565 KaPRE in Boulder, CO is using Python for on-site customization of C++
566 applications, rapid-prototyping/development,
567 language-based-components, and possibly more. This is pretty solid:
568 Python's being shipped with their tool-set now, to beta sites.
569 Contact: <lutz@KaPRE.COM> (Mark Lutz).
571 Individuals at many other companies are using Python for internal
572 development or for as yet unannounced products (witness their
573 contributions to the Python mailing list or newsgroup).
575 SGI has advertised in the Python list looking for Python programmers
576 for a project involving interactive television.
578 See also the workshop minutes at
579 <URL:http://www.python.org/workshops/> -- in general the WWW server is
580 more up to date than the FAQ for these issues.
582 Python has also been elected as an extension language by MADE, a
583 consortium supported by the European Committee's ESPRIT program and
584 consisting of Bull, CWI and some other European companies. Contact:
585 Ivan Herman <ivan@cwi.nl>.
587 If you'd like to be included in the list above, send me email!
589 2.4. Q. How stable is Python?
591 A. Very stable. While the current version number would suggest it is
592 in the early stages of development, in fact new, stable releases
593 (numbered 0.9.x through 1.3) have been coming out roughly every 3 to
594 6 months for the past four years.
596 2.5. Q. When will the next version be released?
598 A. Version 1.3 is being released on 13 October 1995. It is too early
599 to predict when the next release will be necessary, but you can expect
600 something awesome within half a year!
602 2.6. Q. What new developments are expected for Python in the future?
604 A. See my Work-In-Progress web page, currently at
605 <URL:http://www.python.org:~guido/WIP.html>, and the pages for the
606 Second Python Workshop (best reached via the Python home page,
607 <URL:http://www.python.org/>). Also follow the newsgroup discussions!
609 2.7. Q. Is it reasonable to propose incompatible changes to Python?
611 A. In general, no. There are already millions of lines of Python code
612 around the world, so any changes in the language that invalidates more
613 than a very small fraction of existing programs has to be frowned
614 upon. Even if you can provide a conversion program, there still is
615 the problem of updating all documentation. Providing a gradual
616 upgrade path is the only way if a feature has to be changed.
618 2.8. Q. What is the future of Python?
620 A. If I knew, I'd be rich :-)
622 Seriously, the formation of the PSA (Pyton Software Activity, see
623 <URL:http://www.python.org/psa/>) ensures some kind of support even in
624 the (unlikely! event that I'd be hit by a bus (actually, here in the
625 US, a car accident would be more likely :-), were to join a nunnery,
626 or would be head-hunted. A large number of Python users have become
627 experts at Python programming as well as maintenance of the
628 implementation, and would easily fill the vacuum created by my
631 In the mean time, I have no plans to disappear -- rather, I am
632 committed to improving Python, and my current benefactor, CNRI (see
633 <URL:http://www.cnri.reston.va.us>) is just as committed to continue
634 its support of Python and the PSA. In fact, we have great plans for
635 Python -- we just can't tell yet!
637 2.9. Q. What is the PSA, anyway?
639 A. The Python Software Activity <URL:http://www.python.org/psa/> was
640 created by a number of Python aficionados who want Python to be more
641 than the product and responsibility of a single individual. It has
642 found a home at CNRI <URL:http://www.cnri.reston.va.us>. Anybody who
643 wishes Python well should join the PSA.
645 2.10. Q. How do I join the PSA?
647 A. The full scoop is available on the web, see
648 <URL:http://www.python.org/psa/Joining.html>. Summary: send a check
649 of at least $50 to CNRI/PSA, 1895 Preston White Drive, Suite 100, in
650 Reston, VA 22091. Full-time students pay $25. Companies can join for
653 2.11. Q. What are the benefits of joining the PSA?
655 A. Like National Public Radio, if not enough people join, Python will
656 wither. Your name will be mentioned on the PSA's web server.
657 Workshops organized by the PSA <URL:http://www.python.org/workshops/>
658 are only accessible to PSA members (you can join at the door). The
659 PSA is working on additional benefits, such as reduced prices for
660 books and software, and early access to beta versions of Python.
663 3. Building Python and Other Known Bugs
664 =======================================
666 3.1. Q. Is there a test set?
668 A. Yes, simply do "import testall" (or "import autotest" if you aren't
669 interested in the output). The standard modules whose name begins
670 with "test" together comprise the test. The test set doesn't test
671 *all* features of Python but it goes a long way to confirm that a new
672 port is actually working. The Makefile contains an entry "make test"
673 which runs the autotest module. NOTE: if "make test" fails, run the
674 tests manually ("import testall") to see what goes wrong before
677 3.2. Q. When running the test set, I get complaints about floating point
678 operations, but when playing with floating point operations I cannot
679 find anything wrong with them.
681 A. The test set makes occasional unwarranted assumptions about the
682 semantics of C floating point operations. Until someone donates a
683 better floating point test set, you will have to comment out the
684 offending floating point tests and execute similar tests manually.
686 3.3. Q. Link errors after rerunning the configure script.
688 A. It is generally necessary to run "make clean" after a configuration
691 3.4. Q. The python interpreter complains about options passed to a
692 script (after the script name).
694 A. You are probably linking with GNU getopt, e.g. through -liberty.
695 Don't. The reason for the complaint is that GNU getopt, unlike System
696 V getopt and other getopt implementations, doesn't consider a
697 non-option to be the end of the option list. A quick (and compatible)
698 fix for scripts is to add "--" to the interpreter, like this:
700 #! /usr/local/bin/python --
702 You can also use this interactively:
704 python -- script.py [options]
706 Note that a working getopt implementation is provided in the Python
707 distribution (in Python/getopt.c) but not automatically used.
709 3.5. Q. When building on the SGI, make tries to run python to create
710 glmodule.c, but python hasn't been built or installed yet.
712 A. Comment out the line mentioning glmodule.c in Setup and build a
713 python without gl first; install it or make sure it is in your $PATH,
714 then edit the Setup file again to turn on the gl module, and make
715 again. You don't need to do "make clean"; you do need to run "make
716 Makefile" in the Modules subdirectory (or just run "make" at the
719 3.6. Q. Python built with gcc for the DEC Alpha doesn't work.
721 People have reported problems with gcc 2.5.8 up to 2.6.3. The DEC
722 OSF/1 cc compiler does not have these problems so it's likely a gcc
723 bug. The latest news is that this has been fixed in Python 1.2 by a
724 source change (I gave up waiting for a fixed gcc).
726 3.7. Q. I use VPATH but some targets are built in the source directory.
728 A. On some systems (e.g. Sun), if the target already exists in the
729 source directory, it is created there instead of in the build
730 directory. This is usually because you have previously built without
731 VPATH. Try running "make clobber" in the source directory.
733 3.8. Q. Trouble building or linking with the GNU readline library.
735 A. Consider using readline 2.0. Some hints:
737 - You can use the GNU readline library to improve the interactive user
738 interface: this gives you line editing and command history when
739 calling python interactively. You need to configure and build the GNU
740 readline library before running the configure script. Its sources are
741 no longer distributed with Python; you can ftp them from any GNU
742 mirror site, or from its home site
743 <URL:ftp://slc2.ins.cwru.edu/pub/dist/readline-2.0.tar.gz> (or a
744 higher version number -- using version 1.x is not recommended). Pass
745 the Python configure script the option --with-readline=DIRECTORY where
746 DIRECTORY is the absolute pathname of the directory where you've built
747 the readline library. Some hints on building and using the readline
750 - On SGI IRIX 5, you may have to add the following
754 #define sigmask(sig) (1L << ((sig)-1))
757 - On most systems, you will have to add #include "rldefs.h" to the
758 top of several source files, and if you use the VPATH feature, you
759 will have to add dependencies of the form foo.o: foo.c to the
760 Makefile for several values of foo.
762 - The readline library requires use of the termcap library. A
763 known problem with this is that it contains entry points which
764 cause conflicts with the STDWIN and SGI GL libraries. The STDWIN
765 conflict can be solved (and will be, in the next release of
766 STDWIN) by adding a line saying '#define werase w_erase' to the
767 stdwin.h file (in the STDWIN distribution, subdirectory H). The
768 GL conflict has been solved in the Python configure script by a
769 hack that forces use of the static version of the termcap library.
771 - Check the newsgroup gnu.bash.bug <URL:news:gnu.bash.bug> for
772 specific problems with the readline library (I don't read this group
773 but I've been told that it is the place for readline bugs).
775 3.9. Q. Trouble building Python on Linux.
777 A. If you're building Python 1.2, Slackware 2.2 has a buggy bash
778 (version 1.14.3) which breaks a sed script that is used to build
779 Modules/Makefile. Replace /bin/sh with /bin/ash in both makesetup and
782 In 1.1 and 1.1.1, there's a bug in the reference counting logic of
783 ternary pow() which is only tripped by very picky mallocs, like the
784 GNU malloc on Linux. This has been fixed in 1.2. To continue the
785 tests in 1.1(.1), just disable the tests of pow() with three arguments
786 from Lib/test/test_b2.py.
788 Apart from this, Python builds and runs fine on most Linux versions
789 (if you run into trouble on an old Linux version, consider upgrading).
791 3.10. Q. Trouble with prototypes on Ultrix.
793 A. Ultrix cc seems broken -- use gcc, or edit config.h to #undef
796 3.11. Q. Trouble with posix.listdir on NeXTSTEP 3.2.
798 A. (This often manifests itself as a weird error from the
799 compileall.py script run by "make libinstall".)
801 Don't use gcc, use the Next C compiler (cc). Even though it is
802 derived from (an old version of) gcc, its interpretation of the
803 "-posix" switch is different; in this particular case, cc is right and
806 3.12. Q. Other trouble building Python on platform X.
808 A. Please email the details to <guido@cwi.nl> and I'll look into it.
809 Please provide as many details as possible. In particular, if you
810 don't tell me what type of computer and what operating system (and
811 version) you are using it will be difficult for me to figure out what
812 is the matter. If you get a specific error message, please email it
815 3.13. Q. How to configure dynamic loading on Lixux.
817 A. There are two answers, depending on whether you are using the new
818 ELF object format or not.
820 For ELF, this seems to be the procedure (thanks to Martin von Loewis):
822 Compile Python to an ELF binary.
824 In addition, you have to use the following flags:
826 - when linking python: -rdynamic -ldl
827 - when compiling an object that goes into a shared module: -fPIC
828 - when linking a shared module: -shared -ldl
830 Furthermore, it appears that some Python releases did not understand
831 that Linux has dynamic linking. Python 1.2 did it right, but you
832 should check wether the generated config.h indicates the use of -ldl
833 (i.e. dlopen, dlsym). Finally, you can load a shared module by saying
834 'use foo'. Make sure the module is in your PYTHONPATH.
836 For pre-ELF systems (thanks to Andrew Kuchling):
838 Pre-ELF Linux requires that you use the GNU DLD library. The stages
839 of using dynamic libraries on Linux are:
841 1) Get dld 3.2.5 from a Linux site. Be careful here; the most
842 recent GNU version is 3.2.3, and doesn't support Linux; be sure to
843 get it from a Linux mirror, not a GNU mirror (3.2.4 should also
844 work). Compile it and install the library libdld.a somewhere; I
847 Suitable URLs for the dld distribution are currently:
848 <URL:ftp://sunsite.unc.edu/pub/Linux/libs/dld-3.2.5.src.tar.gz> and
849 <URL:ftp://tsx-11.mit.edu/pub/linux/sources/libs/dld-3.2.5.src.tar.gz>.
850 There's also a binary distribution of it:
851 <URL:ftp://sunsite.unc.edu/pub/Linux/libs/dld-3.2.5.bin.tar.gz>.
853 2) Get Jack Jansen's DL library; its location is given in the
854 _Extending Python_ manual as <URL:ftp://ftp.cwi.nl/pub/dynload/>.
855 Compile it and install libdl.a wherever you put libdld.a.
857 3) Run Python's configure script, giving it the --with-dl-dld option,
858 which requires a parameter giving the directory where you put the
863 3.14. Q. Under Solaris 2.x, using GCC, how do I use shared libraries?
865 A. Use the linker in /usr/ucb/ld, not the GNU linker. The latter
866 cannot create shared libraries.
868 3.15. Q. Errors when linking with a shared library containing C++ code.
870 A. Link the main Python binary with C++. Change the definition of
871 LINKCC in Modules/Makefile to be your C++ compiler. You may have to
872 edit config.c slightly to make it compilable with C++.
874 3.16. Q. Tk menus or radiobuttons don't work properly in Python 1.2.
876 A. There's a bug in Tkinter.py; remove ClassType and InstanceType from
877 the definition of CallableTypes near the top of Lib/tkinter/Tkinter.py.
879 3.17. Q. I built with _tkintermodule.c enabled but get "Tkinter not found".
881 A. Tkinter.py (note: upper case T) lives in a subdirectory of Lib,
882 Lib/tkinter. If you are using the default module search path, you
883 probably didn't enable the line in the Modules/Setup file defining
884 TKPATH; if you use the environment variable PYTHONPATH, you'll have to
885 add the proper tkinter subdirectory.
887 3.18. Q. I built with Tk 4.0 but Tkinter complains about the Tk version.
889 A. Several things could cause this. You most likely have a Tk 3.6
890 installation that wasn't completely eradicated by the Tk 4.0
891 installation (which tends to add "4.0" to its installed files). You
892 may have the Tk 3.6 support library installed in the place where the
893 Tk 4.0 support files should be (default /usr/local/lib/tk/); you may
894 have compiled Python with the old tk.h header file (yes, this actually
895 compiles!); you may actually have linked with Tk 3.6 even though Tk
896 4.0 is also around. Similar for Tcl 7.4 vs. Tcl 7.3.
898 3.19. Q. Tk doesn't work right on DEC Alpha.
900 A. You probably compiled either Tcl, Tk or Python with gcc. Don't.
901 For this platform, which has 64-bit integers, gcc is known to generate
902 broken code. The standard cc (which comes bundled with the OS!)
903 works. If you still prefer gcc, at least try recompiling with cc
904 before reporting problems to the newsgroup or the author; if this
905 fixes the problem, report the bug to the gcc developers instead. (As
906 far as we know, there are no problem with gcc on other platforms --
907 the instabilities seem to be restricted to the DEC Alpha.) See also
911 4. Programming in Python
912 ========================
914 4.1. Q. Is there a source code level debugger with breakpoints, step,
917 A. Yes. Check out module pdb; pdb.help() prints the documentation (or
918 you can read it as Lib/pdb.doc). If you use the STDWIN option,
919 there's also a windowing interface, wdb. You can write your own
920 debugger by using the code for pdb or wdb as an example.
922 4.2. Q. Can I create an object class with some methods implemented in
923 C and others in Python (e.g. through inheritance)? (Also phrased as:
924 Can I use a built-in type as base class?)
926 A. No, but you can easily create a Python class which serves as a
927 wrapper around a built-in object, e.g. (for dictionaries):
929 # A user-defined class behaving almost identical
930 # to a built-in dictionary.
932 def __init__(self): self.data = {}
933 def __repr__(self): return repr(self.data)
934 def __cmp__(self, dict):
935 if type(dict) == type(self.data):
936 return cmp(self.data, dict)
938 return cmp(self.data, dict.data)
939 def __len__(self): return len(self.data)
940 def __getitem__(self, key): return self.data[key]
941 def __setitem__(self, key, item): self.data[key] = item
942 def __delitem__(self, key): del self.data[key]
943 def keys(self): return self.data.keys()
944 def items(self): return self.data.items()
945 def values(self): return self.data.values()
946 def has_key(self, key): return self.data.has_key(key)
948 4.3. Q. Is there a curses/termcap package for Python?
950 A. Yes -- Lance Ellinghaus has written a module that interfaces to
951 System V's "ncurses". If you know a little curses and some Python,
952 it's straightforward to use. It is part of the standard Python
953 distribution, but not configured by default -- you must enable it by
954 editing Modules/Setup. It requires a System V curses implementation.
956 You could also consider using the "alfa" (== character cell) version
957 of STDWIN. (Standard Window System Interface, a portable windowing
958 system interface by myself <URL:ftp://ftp.cwi.nl/pub/stdwin/>.) This
959 will also prepare your program for porting to windowing environments
960 such as X11 or the Macintosh.
962 4.4. Q. Is there an equivalent to C's onexit() in Python?
964 A. Yes, if you import sys and assign a function to sys.exitfunc, it
965 will be called when your program exits, is killed by an unhandled
966 exception, or (on UNIX) receives a SIGHUP or SIGTERM signal.
968 4.5. Q. When I define a function nested inside another function, the
969 nested function seemingly can't access the local variables of the
970 outer function. What is going on? How do I pass local data to a
973 A. Python does not have arbitrarily nested scopes. When you need to
974 create a function that needs to access some data which you have
975 available locally, create a new class to hold the data and return a
976 method of an instance of that class, e.g.:
978 class MultiplierClass:
979 def __init__(self, factor):
981 def multiplier(self, argument):
982 return argument * self.factor
984 def generate_multiplier(factor):
985 return MultiplierClass(factor).multiplier
987 twice = generate_multiplier(2)
991 An alternative solution uses default arguments, e.g.:
993 def generate_multiplier(factor):
994 def multiplier(arg, fact = factor):
998 twice = generate_multiplier(2)
1002 4.6. Q. How do I iterate over a sequence in reverse order?
1004 A. If it is a list, the fastest solution is
1009 "do something with x"
1013 This has the disadvantage that while you are in the loop, the list
1014 is temporarily reversed. If you don't like this, you can make a copy.
1015 This appears expensive but is actually faster than other solutions:
1020 <do something with x>
1022 If it isn't a list, a more general but slower solution is:
1028 <do something with x>
1030 A more elegant solution, is to define a class which acts as a sequence
1031 and yields the elements in reverse order (solution due to Steve
1035 def __init__(self, seq):
1038 return len(self.forw)
1039 def __getitem__(self, i):
1040 return self.forw[-(i + 1)]
1042 You can now simply write:
1045 <do something with x>
1047 Unfortunately, this solution is slowest of all, due to the method
1050 4.7. Q. My program is too slow. How do I speed it up?
1052 A. That's a tough one, in general. There are many tricks to speed up
1053 Python code; I would consider rewriting parts in C only as a last
1054 resort. One thing to notice is that function and (especially) method
1055 calls are rather expensive; if you have designed a purely OO interface
1056 with lots of tiny functions that don't do much more than get or set an
1057 instance variable or call another method, you may consider using a
1058 more direct way, e.g. directly accessing instance variables. Also see
1059 the standard module "profile" (described in the file
1060 "python/lib/profile.doc") which makes it possible to find out where
1061 your program is spending most of its time (if you have some patience
1062 -- the profiling itself can slow your program down by an order of
1065 4.8. Q. When I have imported a module, then edit it, and import it
1066 again (into the same Python process), the changes don't seem to take
1067 place. What is going on?
1069 A. For reasons of efficiency as well as consistency, Python only reads
1070 the module file on the first time a module is imported. (Otherwise a
1071 program consisting of many modules, each of which imports the same
1072 basic module, would read the basic module over and over again.) To
1073 force rereading of a changed module, do this:
1078 Warning: this technique is not 100% fool-proof. In particular,
1079 modules containing statements like
1081 from modname import some_objects
1083 will continue to work with the old version of the imported objects.
1085 4.9. Q. How do I find the current module name?
1087 A. A module can find out its own module name by looking at the
1088 (predefined) global variable __name__. If this has the value
1089 '__main__' you are running as a script.
1091 4.10. Q. I have a module in which I want to execute some extra code
1092 when it is run as a script. How do I find out whether I am running as
1095 A. See the previous question. E.g. if you put the following on the
1096 last line of your module, main() is called only when your module is
1097 running as a script:
1099 if __name__ == '__main__': main()
1101 4.11. Q. I try to run a program from the Demo directory but it fails
1102 with ImportError: No module named ...; what gives?
1104 A. This is probably an optional module (written in C!) which hasn't
1105 been configured on your system. This especially happens with modules
1106 like "Tkinter", "stdwin", "gl", "Xt" or "Xm". For Tkinter, STDWIN and
1107 many other modules, see Modules/Setup.in for info on how to add these
1108 modules to your Python, if it is possible at all. Sometimes you will
1109 have to ftp and build another package first (e.g. STDWIN). Sometimes
1110 the module only works on specific platforms (e.g. gl only works on SGI
1113 NOTE: if the complaint is about "Tkinter" (upper case T) and you have
1114 already configured module "_tkinter" (lower case t and underscore),
1115 the solution is *not* to rename tkinter to Tkinter or vice versa.
1116 There is probably something wrong with your module search path. Check
1117 out the value of sys.path.
1119 For X-related modules (Xt and Xm) you will have to do more work: they
1120 are currently not part of the standard Python distribution. You will
1121 have to ftp the Extensions tar file, e.g.
1122 <URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz> and follow
1123 the instructions there.
1125 See also the next question.
1127 4.12. Q. I have successfully built Python with STDWIN but it can't
1128 find some modules (e.g. stdwinevents).
1130 A. There's a subdirectory of the library directory named 'stdwin'
1131 which should be in the default module search path. There's a line in
1132 Modules/Setup(.in) that you have to enable for this purpose --
1133 unfortunately in the latest release it's not near the other
1134 STDWIN-related lines so it's easy to miss it.
1136 4.13. Q. What GUI toolkits exist for Python?
1138 A. Depending on what platform(s) you are aiming at, there are several.
1140 - There's a neat object-oriented interface to the Tcl/Tk widget set,
1141 called Tkinter. As of python 1.1, it is part of the standard Python
1142 distribution -- all you need to do is enable it in Modules/Setup
1143 (provided you have already installed Tk and Tcl). This is probably
1144 the easiest to install and use, and the most complete widget set. It
1145 is also very likely that in the future the standard Python GUI API
1146 will be based on or at least look very much like the Tkinter
1147 interface. For more info about Tk, including pointers to the source,
1148 see the Tcl/Tk home page <URL:http://www.sunlabs.com/research/tcl/>.
1150 - The standard Python distribution comes with an interface to STDWIN,
1151 a platform-independent low-level windowing interface. You have to ftp
1152 the source for STDWIN separately,
1153 e.g. <URL:ftp://ftp.cwi.nl/pub/stdwin/> or gatekeeper.dec.com in
1154 pub/misc/stdwin <URL:ftp://gatekeeper.dec.com/pub/misc/stdwin/>.
1155 STDWIN runs under X11 or the Mac; a Windows port has been attempted
1156 but I can't seem to get it working. Note that STDWIN is really not
1157 powerful enough to implement a modern GUI (no widgets, etc.) and that
1158 I don't have the time to maintain or extend it, so you may be better
1159 off using Tkinter or the Motif interface, unless you require
1160 portability to the Mac (which is also offered by SUIT, by the way --
1163 - For SGI IRIX only, there's an interface to the complete GL (Graphics
1164 Library -- low level but very good 3D capabilities) as well as to
1165 FORMS (a buttons-and-sliders-etc package built on top of GL by Mark
1166 Overmars -- ftp'able from <URL:ftp://ftp.cs.ruu.nl/pub/SGI/FORMS/>).
1168 - There's an interface to X11, including the Athena and Motif widget
1169 sets (and a few individual widgets, like Mosaic's HTML widget and
1170 SGI's GL widget) in the Extensions set, which is separately ftp'able
1171 <URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz>.
1173 - There's an interface to SUIT, the U of Virginia's Simple User
1174 Interface Toolkit; it can be ftp'ed from
1175 <URL:ftp://uvacs.cs.virginia.edu/pub/suit/python/SUIT_python.tar.Z>.
1176 A PC binary of Python 1.0.2 compiled with DJGPP and with SUIT support
1177 built-in has been made available by Antonio Costa
1178 <URL:ftp://asterix.inescn.pt/pub/PC/python/pyt102su.exe> (a
1179 self-extracting archive). Note that the UVa people themselves have
1180 expressed doubts about SUIT, and are planning to build a Python GUI
1181 API based upon Tk (though not necessarily on Tkinter); see
1182 <URL:http://server.cs.virginia.edu/~tnb2d/IT/IT.html>.
1184 - There's an interface to WAFE, a Tcl interface to the X11 Motif and
1185 Athena widget sets. Last I heard about it it was included in the WAFE
1187 <URL:ftp://ftp.wu-wien.ac.at/pub/src/X11/wafe/wafe-1.0.tar.gz-prerelease>.
1189 - The NT port by Mark Hammond (see question 7.4) includes an interface
1190 to the Microsoft Foundation Classes and a Python programming
1191 environment using it that's written mostly in Python. See
1192 <URL:ftp://ftp.python.org/pub/python/nt/>.
1194 - There's an interface to wxWindows. wxWindows is a portable GUI
1195 class library written in C++. It supports XView, Motif, MS-Windows as
1196 targets. There is some support for Macs and CURSES as well. wxWindows
1197 preserves the look and feel of the underlying graphics toolkit. See
1198 the wxPython WWW page at
1199 <URL:http://www.aiai.ed.ac.uk/~jacs/wx/wxpython/wxpython.html>.
1201 - There's an object-oriented GUI based on the Microsoft Foundation
1202 Classes model called WPY. Programs written in WPY run unchanged and
1203 with native look and feel on NT, Windows 3.1 (using win32s) and on
1204 Unix (using Tk). Source and binaries for NT and Linux are available
1205 in <URL:ftp://ftp.python.org/pub/python/wpy>.
1207 - Python has been mentioned on the "Futurism" subpage of the Fresco
1208 home page <URL:http://www.faslab.com/fresco/HomePage.html>. "Pesto"
1209 is a Python interface to the CORBA dynamic invocation interface, and
1210 thus Fresco. A Pesto prototype is running and is currently being
1211 packaged up for inclusion in the Fresco snapshot. See also the Pesto
1212 web pages: <URL:http://www.faslab.com/fresco/pesto/Index.html>.
1214 4.14. Q. Are there any interfaces to database packages in Python?
1216 A. There's an interface to SYBASE by John Redford
1217 <jredford@lehman.com>.
1219 There's an interface to metalbase by Lance Ellinghaus
1220 <lance@markv.com>; it is part of the separate Extensions distribution
1221 <URL:ftp://ftp.python.org/pub/python/src/extensions.tar.gz>.
1223 Anthony Baxter <anthony.baxter@aaii.oz.au> has written an interface to
1225 <URL:ftp://ftp.python.org/pub/python/contrib/PymSQL.tar.gz>.
1227 Tom Culliton <culliton@clark.net> has written an Oracle module.
1228 See <URL:ftp://ftp.clark.net/pub/culliton/oramod.tgz>.
1230 4.15. Q. Is it possible to write obfuscated one-liners in Python?
1232 A. Yes. See the following three examples, due to Ulf Bartelt:
1235 print filter(None,map(lambda y:y*reduce(lambda x,y:x*y!=0,
1236 map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))),1),range(2,1000)))
1238 # First 10 Fibonacci numbers
1239 print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),
1243 print (lambda Ru,Ro,Iu,Io,IM,Sx,Sy:reduce(lambda x,y:x+y,map(lambda y,
1244 Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu,Io=Io,Ru=Ru,Ro=Ro,i=IM,
1245 Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru,Ro=Ro,
1246 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
1247 >=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(
1248 64+F(Ru+x*(Ro-Ru)/Sx,yc,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy
1249 ))))(-2.1, 0.7, -1.2, 1.2, 30, 80, 24)
1250 # \___ ___/ \___ ___/ | | |__ lines on screen
1251 # V V | |______ columns on screen
1252 # | | |__________ maximum of "iterations"
1253 # | |_________________ range on y axis
1254 # |____________________________ range on x axis
1256 Don't try this at home, kids!
1258 4.16. Q. Is there an equivalent of C's "?:" ternary operator?
1260 A. Not directly. In many cases you can mimic a?b:c with "a and b or
1261 c", but there's a flaw: if b is zero (or empty, or None -- anything
1262 that tests false) then c will be selected instead. In many cases you
1263 can prove by looking at the code that this can't happen (e.g. because
1264 b is a constant or has a type that can never be false), but in general
1265 this can be a problem.
1267 Steve Majewski (or was it Tim Peters?) suggested the following
1268 solution: (a and [b] or [c])[0]. Because [b] is a singleton list it
1269 is never false, so the wrong path is never taken; then applying [0] to
1270 the whole thing gets the b or c that you really wanted. Ugly, but it
1271 gets you there in the rare cases where it is really inconvenient to
1272 rewrite your code using 'if'.
1274 4.17. Q. My class defines __del__ but it is not called when I delete the
1277 A. There are several possible reasons for this.
1279 - The del statement does not necessarily call __del__ -- it simply
1280 decrements the object's reference count, and if this reaches zero
1283 - If your data structures contain circular links (e.g. a tree where
1284 each child has a parent pointer and each parent has a list of
1285 children) the reference counts will never go back to zero. You'll
1286 have to define an explicit close() method which removes those
1287 pointers. Please don't ever call __del__ directly -- __del__ should
1288 call close() and close() should make sure that it can be called more
1289 than once for the same object.
1291 - If the object has ever been a local variable (or argument, which is
1292 really the same thing) to a function that caught an expression in an
1293 except clause, chances are that a reference to the object still exists
1294 in that function's stack frame as contained in the stack trace.
1295 Normally, deleting (better: assigning None to) sys.exc_traceback will
1296 take care of this. If you a stack was printed for an unhandled
1297 exception in an interactive interpreter, delete sys.last_traceback
1300 - There is code that deletes all objects when the interpreter exits,
1301 but if your Python has been configured to support threads, it is not
1302 called (because other threads may still be active). You can define
1303 your own cleanup function using sys.exitfunc (see question 4.4).
1305 - Finally, there are some obscure bugs if your __del__ method does
1306 complicated things such as updating dictionaries or lists or
1307 references globals. I hope to have fixed these in release 1.2.
1309 4.18. Q. How do I change the shell environment for programs called
1310 using os.popen() or os.system()? Changing os.environ doesn't work.
1312 A. Modifying the environment passed to subshells was left out of the
1313 interpreter because there seemed to be no well-established portable
1314 way to do it (in particular, some systems, have putenv(), others have
1315 setenv(), and some have none at all).
1317 However if all you want is to pass environment variables to the
1318 commands run by os.system() or os.popen(), there's a simple solution:
1319 prefix the command string with a couple of variable assignments and
1320 export statements. The following would be universal for popen:
1323 from commands import mkarg # nifty routine to add shell quoting
1324 def epopen(cmd, mode, env = {}):
1325 # env is a dictionary of environment variables
1327 for key, value in env.items():
1328 prefix = prefix + '%s=%s\n' % (key, mkarg(value)[1:])
1329 prefix = prefix + 'export %s\n' % key
1330 return os.popen(prefix + cmd, mode)
1332 4.19. Q. What is a class?
1334 A. A class is the particular object type that is created by executing
1335 a class statement. Class objects are used as templates, to create
1336 class instance objects, which embody both the data structure and
1337 program routines specific to a datatype.
1339 4.20. Q. What is a method?
1341 A. A method is a function that you normally call as
1342 x.name(arguments...) for some object x. The term is used for methods
1343 of classes and class instances as well as for methods of built-in
1344 objects. (The latter have a completely different implementation and
1345 only share the way their calls look in Python code.) Methods of
1346 classes (and class instances) are defined as functions inside the
1349 4.21. Q. What is self?
1351 A. Self is merely a conventional name for the first argument of a
1352 method -- i.e. a function defined inside a class definition. A method
1353 defined as meth(self, a, b, c) should be called as x.meth(a, b, c) for
1354 some instance x of the class in which the definition occurs;
1355 the called method will think it is called as meth(x, a, b, c).
1357 4.22. Q. What is a unbound method?
1359 A. An unbound method is a method defined in a class that is not yet
1360 bound to an instance. You get an unbound method if you ask for a
1361 class attribute that happens to be a function. You get a bound method
1362 if you ask for an instance attribute. A bound method knows which
1363 instance it belongs to and calling it supplies the instance automatically;
1364 an unbound method only knows which class it wants for its first
1365 argument (a derived class is also OK). Calling an unbound method
1366 doesn't "magically" derive the first argument from the context -- you
1367 have to provide it explicitly.
1369 4.23. Q. How do I call a method defined in a base class from a derived
1370 class that overrides it?
1372 A. If your class definition starts with "class Derived(Base): ..."
1373 then you can call method meth defined in Base (or one of Base's base
1374 classes) as Base.meth(self, arguments...). Here, Base.meth is an
1375 unbound method (see previous question).
1377 4.24. Q. How do I call a method from a base class without using the
1378 name of the base class?
1380 A. DON'T DO THIS. REALLY. I MEAN IT. It appears that you could call
1381 self.__class__.__bases__[0].meth(self, arguments...) but this fails when
1382 a doubly-derived method is derived from your class: for its instances,
1383 self.__class__.__bases__[0] is your class, not its base class -- so
1384 (assuming you are doing this from within Derived.meth) you would start
1387 4.25. Q. How can I organize my code to make it easier to change the base
1390 A. You could define an alias for the base class, assign the real base
1391 class to it before your class definition, and use the alias throughout
1392 your class. Then all you have to change is the value assigned to the
1393 alias. Incidentally, this trick is also handy if you want to decide
1394 dynamically (e.g. depending on availability of resources) which base
1395 class to use. Example:
1397 BaseAlias = <real base class>
1398 class Derived(BaseAlias):
1400 BaseAlias.meth(self)
1403 4.26. Q. How can I find the methods or attributes of an object?
1405 A. This depends on the object type.
1407 For an instance x of a user-defined class, instance attributes are
1408 found in the dictionary x.__dict__, and methods and attributes defined
1409 by its class are found in x.__class__.__bases__[i].__dict__ (for i in
1410 range(len(x.__class__.__bases__))). You'll have to walk the tree of
1411 base classes to find *all* class methods and attributes.
1413 Many, but not all built-in types define a list of their method names
1414 in x.__methods__, and if they have data attributes, their names may be
1415 found in x.__members__. However this is only a convention.
1417 For more information, read the source of the standard (but
1418 undocumented) module newdir.
1420 4.27. Q. I can't seem to use os.read() on a pipe created with os.popen().
1422 A. os.read() is a low-level function which takes a file descriptor (a
1423 small integer). os.popen() creates a high-level file object -- the
1424 same type used for sys.std{in,out,err} and returned by the builtin
1425 open() function. Thus, to read n bytes from a pipe p created with
1426 os.popen(), you need to use p.read(n).
1428 4.28. Q. How can I create a stand-alone binary from a Python script?
1430 The demo script "Demo/scripts/freeze.py" does what you want. (It's
1431 actually not a demo but a support tool -- there is some extra code in
1432 the interpreter to accommodate it.) It requires that you have the
1433 Python build tree handy, complete with all the lib*.a files.
1435 This works by scanning your source recursively for import statements
1436 (both forms) and looking for the modules on the standard Python path
1437 as well as in the source directory (for built-in modules). It then
1438 "compiles" the modules written in Python to C code (array initializers
1439 that can be turned into code objects using the marshal module) and
1440 creates a custom-made config file that only contains those built-in
1441 modules which are actually used in the program. It then compiles the
1442 generated C code and links it with the rest of the Python interpreter
1443 to form a self-contained binary which acts exactly like your script.
1445 Hint: the freeze program only works if your script's filename ends in
1448 4.29. Q. What WWW tools are there for Python?
1450 A. There's a whole lot in the 1.2 release; see the section on
1451 "Internet and WWW" in the Library Reference Manual. Highlights: a CGI
1452 parser, a url retriever, an html parser.
1454 Steve Miale <smiale@cs.indiana.edu> has written a modular WWW browser
1455 called Dancer. An alpha version can be FTP'ed from
1456 <URL:ftp://ftp.cs.indiana.edu/pub/smiale/dancer.tar.gz>. (There are a
1457 few articles about Dancer in the (hyper)mail archive
1458 <URL:http://www.cwi.nl/~guido/hypermail/python-1994q3/index.html>.)
1460 4.30. Q. How do I run a subprocess with pipes connected to both input
1463 A. This is really a UNIX question. Also, in general, it is unwise to
1464 do so, because you can easily cause a deadlock where the parent
1465 process is blocked waiting for output from the child, while the child
1466 is blocked waiting for input from the child. This can be caused
1467 because the parent expects the child to output more text than it does,
1468 or it can be caused by data being stuck in stdio buffers due to lack
1469 of flushing. The Python parent can of course explicitly flush the data
1470 it sends to the child before it reads any output, but if the child is
1471 a naive C program it can easily have been written to never explicitly
1472 flush its output, even if it is interactive, since flushing is
1475 In many cases, all you really need is to run some data through a
1476 command and get the result back. Unless the data is infinite in size,
1477 the easiest (and often the most efficient!) way to do this is to write
1478 it to a temporary file and run the command with that temporary file as
1479 input. The standard module tempfile exports a function mktemp() which
1480 generates unique temporary file names.
1482 If after reading all of the above you still want to connect two pipes
1483 to a subprocess's standard input and output, here's a simple solution,
1490 MAXFD = 100 # Max number of file descriptors in this system
1493 cmd = string.split(cmd)
1494 p2cread, p2cwrite = os.pipe()
1495 c2pread, c2pwrite = os.pipe()
1501 if os.dup(p2cread) <> 0:
1502 sys.stderr.write('popen2: bad read dup\n')
1503 if os.dup(c2pwrite) <> 1:
1504 sys.stderr.write('popen2: bad write dup\n')
1505 for i in range(3, MAXFD):
1511 os.execv(cmd[0], cmd)
1515 tochild = os.fdopen(p2cwrite, 'w')
1517 fromchild = os.fdopen(c2pread, 'r')
1518 return fromchild, tochild
1520 Note that many interactive programs (e.g. vi) don't work well with
1521 pipes substituted for standard input and output. You will have to use
1522 pseudo ttys ("ptys") instead of pipes. There is some undocumented
1523 code to use these in the library module pty.py -- I'm afraid you're on
1526 A different answer is a Python interface to Don Libes' "expect"
1527 library. A prerelease of this is available on the Python ftp mirror
1528 sites in the contrib subdirectory as expy-0.3.tar.gz, e.g.
1529 <URL:ftp://ftp.python.org/pub/python/contrib/expy-0.3.tar.gz>.
1531 4.31. Q. How do I call a function if I have the arguments in a tuple?
1533 A. Use the built-in function apply(). For instance,
1542 Note that func(args) is not the same -- it calls func() with exactly
1543 one argument, the tuple args, instead of three arguments, the integers
1546 4.32. Q. How do I enable font-lock-mode for Python in Emacs?
1548 A. Assuming you're already using python-mode and font-lock-mode
1549 separately, all you need to do is put this in your .emacs file:
1551 (defun my-python-mode-hook ()
1552 (setq font-lock-keywords python-font-lock-keywords)
1554 (add-hook 'python-mode-hook 'my-python-mode-hook)
1556 4.33. Q. Is there an inverse to the format operator (a la C's scanf())?
1560 For simple input parsing, the easiest approach is usually to split
1561 the line into whitespace-delimited words using string.split(), and to
1562 convert decimal strings to numeric values using string.atoi(),
1563 string.atol() or string.atof(). (Python's atoi() is 32-bit and its
1564 atol() is arbitrary precision.) If you want to use another delimiter
1565 than whitespace, use string.splitfield() (possibly combining it with
1566 string.strip() which removes surrounding whitespace from a string).
1568 For more complicated input parsing, regular expressions (see module
1569 regex) are better suited and more powerful than C's scanf().
1575 5.1. Q. Can I create my own functions in C?
1577 A. Yes, you can create built-in modules containing functions,
1578 variables, exceptions and even new types in C. This is explained in
1579 the document "Extending and Embedding the Python Interpreter" (the
1580 LaTeX file Doc/ext.tex). Also read the chapter on dynamic loading.
1582 5.2. Q. Can I create my own functions in C++?
1584 A. Yes, using the C-compatibility features found in C++. Basically
1585 you place extern "C" { ... } around the Python include files and put
1586 extern "C" before each function that is going to be called by the
1587 Python interpreter. Global or static C++ objects with constructors
1588 are probably not a good idea.
1590 5.3. Q. How can I execute arbitrary Python statements from C?
1592 A. The highest-level function to do this is run_command() which takes
1593 a single string argument which is executed in the context of module
1594 __main__ and returns 0 for success and -1 when an exception occurred
1595 (including SyntaxError). If you want more control, use run_string();
1596 see the source for run_command() in Python/pythonrun.c.
1598 5.4. Q. How can I evaluate an arbitrary Python expression from C?
1600 A. Call the function run_string() from the previous question with the
1601 start symbol eval_input; it then parses an expression, evaluates it
1602 and returns its value. See exec_eval() in Python/bltinmodule.c.
1604 5.5. Q. How do I extract C values from a Python object?
1606 A. That depends on the object's type. If it's a tuple,
1607 gettuplesize(o) returns its length and gettupleitem(o, i) returns its
1608 i'th item; similar for lists with getlistsize(o) and getlistitem(o,
1609 i). For strings, getstringsize(o) returns its length and
1610 getstringvalue(o) a pointer to its value (note that Python strings may
1611 contain null bytes so strlen() is not safe). To test which type an
1612 object is, first make sure it isn't NULL, and then use
1613 is_stringobject(o), is_tupleobject(o), is_listobject(o) etc.
1615 5.6. Q. How do I use mkvalue() to create a tuple of arbitrary length?
1617 A. You can't. Use t = newtupleobject(n) instead, and fill it with
1618 objects using settupleitem(t, i, o) -- note that this "eats" a
1619 reference count of o. Similar for lists with newlistobject(n) and
1620 setlistitem(l, i, o). Note that you *must* set all the tuple items to
1621 some value before you pass the tuple to Python code --
1622 newtupleobject(n) initializes them to NULL, which isn't a valid Python
1625 5.7. Q. What happened to mktuple(), featured in an example in the
1628 A. It's a typo, I meant newtupleobject() (see previous question).
1630 5.8. Q. How do I call an object's method from C?
1632 A. Here's a function (untested) that might become part of the next
1633 release in some form. It uses <stdarg.h> to allow passing the
1634 argument list on to vmkvalue():
1636 object *call_method(object *inst, char *methodname, char *format, ...)
1642 method = getattr(inst, methodname);
1643 if (method == NULL) return NULL;
1644 va_start(va, format);
1645 args = vmkvalue(format, va);
1651 result = call_object(method, args);
1657 This works for any instance that has methods -- whether built-in or
1658 user-defined. You are responsible for eventually DECREF'ing the
1661 To call, e.g., a file object's "seek" method with arguments 10, 0
1662 (assuming the file object pointer is "f"):
1664 res = call_method(f, "seek", "(OO)", 10, 0);
1666 ... an exception occurred ...
1672 Note that since call_object() *always* wants a tuple for the argument
1673 list, to call a function without arguments, pass "()" for the format,
1674 and to call a function with one argument, surround the argument in
1675 parentheses, e.g. "(i)".
1677 5.9. Q. How do I catch the output from print_error()?
1679 A. (Due to Mark Hammond):
1681 * in Python code, define an object that supports the "write()" method.
1682 FWIW, there seems to be a small problem that requires the 'softspace'
1683 attribute to be defined too (fixed in 1.2).
1685 * redirect sys.stdout and sys.stderr to this object.
1687 * call print_error, or just allow the standard traceback mechanism to
1690 Then, the output will go wherever your write() method sends it.
1692 5.10. Q. How do I access a module written in Python from C?
1694 A. You can get a pointer to the module object as follows:
1696 module = import_module("<modulename>");
1698 If the module hasn't been imported yet (i.e. it is not yet present in
1699 sys.modules), this initializes the module; otherwise it simply returns
1700 the value of sys.modules["<modulename>"]. Note that it doesn't enter
1701 the module into any namespace -- it only ensures it has been
1702 initialized and is stored in sys.modules.
1704 You can then access the module's attributes (i.e. any name defined in
1705 the module) as follows:
1707 attr = getattr(module, "<attrname>");
1709 Calling setattr(), to assign to variables in the module, also works.
1711 5.11. Q. How do I interface to C++ objects from Python?
1713 A. Depending on your requirements, there are many approaches. Begin
1714 by reading the "Extending and Embedding" document (Doc/ext.tex, see
1715 also <URL:http://www.python.org/doc/>). Realize that for the Python
1716 run-time system, there isn't a whole lot of difference between C and
1717 C++ -- so the strategy to build a new Python type around a C structure
1718 (pointer) type will also work for C++ objects.
1720 Automatic generation of interfaces between Python and C++ is still at
1721 the horizon -- parsing C++ header files requires an almost complete
1722 C++ parser, and many features aren't easily translated from C++ to
1723 Python: certain forms of operator oveloading, function overloading
1724 (best approached by a varargs function which explicitly type-checks
1725 its arguments), and reference arguments are just a number of features
1726 that are hard to translate correctly if at all.
1728 The hardest problem is to transparently translate the C++ class
1729 hierarchy to Python, so that Python programs derive classes from C++
1730 classes. Given suitable constraints, this may be possible, but it
1731 would require more space than I have in this FAQ to explain how.
1732 In any case, you can get quite a bit done without this, using just the
1733 existing classes from Python.
1735 If this all seems rather daunting, that may be because it is -- C++
1736 isn't exactly a baby to handle without gloves! However, people have
1737 accomplished amazing feats of interfacing between Python and C++, and
1738 a detailed question posted to the Python list is likely to elicit some
1739 interesting and useful responses.
1745 6.1. Q. Why isn't there a generic copying operation for objects in Python?
1747 A. Historically, there wasn't. However, starting in Python 1.2,
1748 there's a library module "copy" which supports both shallow and deep
1749 copying of most common Python objects (though not things like open
1750 files, sockets or windows), including an extensible mechanism to copy
1753 6.2. Q. Why isn't there a generic way to implement persistent objects
1754 in Python? (Persistent == automatically saved to and restored from
1757 A. Like the previous question, historically, there wasn't. The
1758 library module "pickle" now solves this in a very general way (though
1759 you still can't store things like open files, sockests or windows),
1760 and the library module "shelve" uses pickle and (g)dbm to create
1761 presistent mappings containing arbitrary Python objects. There are
1762 some problems with shelve when using gdbm which will be solved in
1765 6.3. Q. Why isn't there a switch or case statement in Python?
1767 A. You can do this easily enough with a sequence of
1768 if... elif... elif... else. There have been some proposals for switch
1769 statement syntax, but there is no consensus (yet) on whether and how
1772 6.4. Q. Why does Python use indentation for grouping of statements?
1774 A. Basically I believe that using indentation for grouping is
1775 extremely elegant and contributes a lot to the clarity of the average
1776 Python program. Most people learn to love this feature after a while.
1777 Some arguments for it:
1779 - Since there are no begin/end brackets there cannot be a disagreement
1780 between grouping perceived by the parser and the human reader. I
1781 remember long ago seeing a C fragment like this:
1788 and staring a long time at it wondering why y was being decremented
1789 even for x > y... (And I wasn't a C newbie then either.)
1791 - Since there are no begin/end brackets, Python is much less prone to
1792 coding-style conflicts. In C there are loads of different ways to
1793 place the braces (including the choice whether to place braces around
1794 single statements in certain cases, for consistency). If you're used
1795 to reading (and writing) code that uses one style, you will feel at
1796 least slightly uneasy when reading (or being required to write)
1799 - Many coding styles place begin/end brackets on a line by themself.
1800 This makes programs considerably longer and wastes valuable screen
1801 space, making it harder to get a good overview over a program.
1802 Ideally, a function should fit on one basic tty screen (say, 20
1803 lines). 20 lines of Python are worth a LOT more than 20 lines of C.
1804 This is not solely due to the lack of begin/end brackets (the lack of
1805 declarations also helps, and the powerful operations of course), but
1808 6.5. Q. Why are Python strings immutable?
1810 A. There are two advantages. One is performance: knowing that a
1811 string is immutable makes it easy to lay it out at construction time
1812 -- fixed and unchanging storage requirements. (This is also one of
1813 the reasons for the distinction between tuples and lists.) The
1814 other is that strings in Python are considered as "elemental" as
1815 numbers. No amount of activity will change the value 8 to anything
1816 else, and in Python, no amount of activity will change the string
1817 "eight" to anything else. (Adapted from Jim Roskind)
1819 6.6. Q. Why don't strings have methods like index() or sort(), like
1822 A. Good question. Strings currently don't have methods at all
1823 (likewise tuples and numbers). Long ago, it seemed unnecessary to
1824 implement any of these functions in C, so a standard library module
1825 "string" written in Python was created that performs string related
1826 operations. Since then, the cry for performance has moved most of
1827 them into the built-in module strop (this is imported by module
1828 string, which is still the preferred interface, without loss of
1829 performance except during initialization). Some of these functions
1830 (e.g. index()) could easily be implemented as string methods instead,
1831 but others (e.g. sort()) can't, since their interface prescribes that
1832 they modify the object, while strings are immutable (see the previous
1835 6.7. Q. Why does Python use methods for some functionality
1836 (e.g. list.index()) but functions for other (e.g. len(list))?
1838 A. Functions are used for those operations that are generic for a
1839 group of types and which should work even for objects that don't have
1840 methods at all (e.g. numbers, strings, tuples). Also, implementing
1841 len(), max(), min() as a built-in function is actually less code than
1842 implementing them as methods for each type. One can quibble about
1843 individual cases but it's really too late to change such things
1846 6.8. Q. Why can't I derive a class from built-in types (e.g. lists or
1849 A. This is caused by the relatively late addition of (user-defined)
1850 classes to the language -- the implementation framework doesn't easily
1851 allow it. See the answer to question 4.2 for a work-around. This
1852 *may* be fixed in the (distant) future.
1854 6.9. Q. Why must 'self' be declared and used explicitly in method
1855 definitions and calls?
1857 A. By asking this question you reveal your C++ background. :-)
1858 When I added classes, this was (again) the simplest way of
1859 implementing methods without too many changes to the interpreter. I
1860 borrowed the idea from Modula-3. It turns out to be very useful, for
1861 a variety of reasons.
1863 First, it makes it more obvious that you are using a method or
1864 instance attribute instead of a local variable. Reading "self.x" or
1865 "self.meth()" makes it absolutely clear that an instance variable or
1866 method is used even if you don't know the class definition by heart.
1867 In C++, you can sort of tell by the lack of a local variable
1868 declaration (assuming globals are rare or easily recognizable) -- but
1869 in Python, there are no local variable declarations, so you'd have to
1870 look up the class definition to be sure.
1872 Second, it means that no special syntax is necessary if you want to
1873 explicitly reference or call the method from a particular class. In
1874 C++, if you want to use a method from base class that is overridden in
1875 a derived class, you have to use the :: operator -- in Python you can
1876 write baseclass.methodname(self, <argument list>). This is
1877 particularly useful for __init__() methods, and in general in cases
1878 where a derived class method wants to extend the base class method of
1879 the same name and thus has to call the base class method somehow.
1881 Lastly, for instance variables, it solves a syntactic problem with
1882 assignment: since local variables in Python are (by definition!) those
1883 variables to which a value assigned in a function body (and that
1884 aren't explicitly declared global), there has to be some way to tell
1885 the interpreter that an assignment was meant to assign to an instance
1886 variable instead of to a local variable, and it should preferably be
1887 syntactic (for efficiency reasons). C++ does this through
1888 declarations, but Python doesn't have declarations and it would be a
1889 pity having to introduce them just for this purpose. Using the
1890 explicit "self.var" solves this nicely. Similarly, for using instance
1891 variables, having to write "self.var" means that references to
1892 unqualified names inside a method don't have to search the instance's
1895 6.10. Q. Can't you emulate threads in the interpreter instead of
1896 relying on an OS-specific thread implementation?
1898 A. Unfortunately, the interpreter pushes at least one C stack frame
1899 for each Python stack frame. Also, extensions can call back into
1900 Python at almost random moments. Therefore a complete threads
1901 implementation requires thread support for C.
1903 6.11. Q. Why can't lambda forms contain statements?
1905 A. Python lambda forms cannot contain statements because Python's
1906 syntactic framework can't handle statements nested inside expressions.
1908 However, in Python, this is not a serious problem. Unlike lambda
1909 forms in other languages, where they add functionality, Python lambdas
1910 are only a shorthand notation if you're too lazy to define a function.
1912 Functions are already first class objects in Python, and can be
1913 declared in a local scope. Therefore the only advantage of using a
1914 lambda form instead of a locally-defined function is that you'll have
1915 to invent a name for the function -- but that's just a local variable
1916 to which the function object (which is exactly the same type of object
1917 that a lambda form yields) is assigned!
1919 6.12. Q. Why is there no more efficient way of iterating over a dictionary
1920 than first constructing the list of keys()?
1922 A. Have you tried it? I bet it's fast enough for your purposes! In
1923 most cases such a list takes only a few percent of the space occupied
1924 by the dictionary -- it needs only 4 bytes (the size of a pointer) per
1925 key -- a dictionary costs 8 bytes per key plus between 30 and 70
1926 percent hash table overhead, plus the space for the keys and values --
1927 by necessity all keys are unique objects and a string object (the most
1928 common key type) costs at least 18 bytes plus the length of the
1929 string. Add to that the values contained in the dictionary, and you
1930 see that 4 bytes more per item really isn't that much more memory...
1932 A call to dict.keys() makes one fast scan over the dictionary
1933 (internally, the iteration function does exist) copying the pointers
1934 to the key objects into a pre-allocated list object of the right size.
1935 The iteration time isn't lost (since you'll have to iterate anyway --
1936 unless in the majority of cases your loop terminates very prematurely
1937 (which I doubt since you're getting the keys in random order).
1939 I don't expose the dictionary iteration operation to Python
1940 programmers because the dictionary shouldn't be modified during the
1941 entire iteration -- if it is, there's a very small chance that the
1942 dictionary is reorganized because the hash table becomes too full, and
1943 then the iteration may miss some items and see others twice. Exactly
1944 because this only occurs rarely, it would lead to hidden bugs in
1945 programs: it's easy never to have it happen during test runs if you
1946 only insert or delete a few items per iteration -- but your users will
1947 surely hit upon it sooner or later.
1949 6.13. Q. Can Python be compiled to machine code, C or some other language?
1951 A. Not easily. Python's high level data types, dynamic typing of
1952 objects and run-time invocation of the interpreter (using eval() or
1953 exec) together mean that a "compiled" Python program would probably
1954 consist mostly of calls into the Python run-time system, even for
1955 seemingly simple operations like "x+1". Thus, the performance gain
1956 would probably be minimal.
1958 Internally, Python source code is always translated into a "virtual
1959 machine code" or "byte code" representation before it is interpreted
1960 (by the "Python virtual machine" or "bytecode interpreter"). In order
1961 to avoid the overhead of parsing and translating modules that rarely
1962 change over and over again, this byte code is written on a file whose
1963 name ends in ".pyc" whenever a module is parsed (from a file whose
1964 name ends in ".py"). When the corresponding .py file is changed, it
1965 is parsed and translated again and the .pyc file is rewritten. There
1966 is no performance difference once the .pyc file has been loaded (the
1967 bytecode read from the .pyc file is exactly the same as the bytecode
1968 created by direct translation). The only difference is that loading
1969 code from a .pyc file is faster than parsing and translating a .py
1970 file, so the presence of precompiled .pyc files will generally improve
1971 start-up time of Python scripts. If desired, the Lib/compileall.py
1972 module/script can be used to force creation of valid .pyc files for a
1973 given set of modules.
1975 If you are looking for a way to translate Python programs in order to
1976 distribute them in binary form, without the need to distribute the
1977 interpreter and library as well, have a look at the freeze.py script
1978 in the Tools/freeze directory. This creates a single binary file
1979 incorporating your program, the Python interpreter, and those parts of
1980 the Python library that are needed by your program. Of course, the
1981 resulting binary will only run on the same type of platform as that
1984 Hints for proper usage of freeze.py:
1986 - the script must be in a file whose name ends in .py
1988 - you must have installed Python fully:
1995 6.14. Q. Why doesn't Python use proper garbage collection?
1997 A. It's looking less and less likely that Python will ever get
1998 "automatic" garbage collection (GC). For one thing, unless this were
1999 added to C as a standard feature, it's a portability pain in the ass.
2000 And yes, I know about the Xerox library. It has bits of assembler
2001 code for *most* *common* platforms. Not for all. And although it is
2002 mostly transparent, it isn't completely transparent (when I once
2003 linked Python with it, it dumped core).
2005 "Proper" GC also becomes a problem when Python gets embedded into
2006 other applications. While in a stand-alone Python it may be fine to
2007 replace the standard malloc() and free() with versions provided by the
2008 GC library, an application embedding Python may want to have its *own*
2009 substitute for malloc() and free(), and may not want Python's. Right
2010 now, Python works with anything that implements malloc() and free()
2013 Besides, the predictability of destructor calls in Python is kind of
2014 attractive. With GC, the following code (which is fine in current
2015 Python) will run out of file descriptors long before it runs out of
2018 for file in <very long list of files>:
2022 Using the current reference counting and destructor scheme, each new
2023 assignment to f closes the previous file. Using GC, this is not
2024 guaranteed. Sure, you can think of ways to fix this. But it's not
2025 off-the-shelf technology.
2028 7. Using Python on non-UNIX platforms
2029 =====================================
2031 7.1. Q. Is there a Mac version of Python?
2033 A. Yes, see the "mac" subdirectory of the distribution sites,
2034 e.g. <URL:ftp://ftp.python.org/pub/python/mac/>.
2036 7.2. Q. Is there a DOS version of Python?
2038 A. Yes, see the "pc" subdirectory of the distribution sites,
2039 e.g. <URL:ftp://ftp.python.org/pub/python/pc/>.
2041 7.3. Q. Is there a Windows 3.1(1) version of Python?
2043 A. Yes, also see the "pc" subdirectory of the distribution sites,
2044 e.g. <URL:ftp://ftp.python.org/pub/python/pc/>. You may also be able
2045 to run either of the Windows NT versions (see next question) if you
2046 have Microsoft's "win32s".
2048 7.4. Q. Is there a Windows NT version of Python?
2050 A. There are two, both sporting DLL support for dynamic loading of
2051 Python modules, and extensions to access the Win32 GUI API.
2053 Mark Hammond <MHammond@cmutual.com.au> maintains an NT port which
2054 includes an interface to the Microsoft Foundation Classes and a Python
2055 programming environment using it that's written mostly in Python. See
2056 <URL:ftp://ftp.python.org/pub/python/nt/>.
2058 Jim Ahlstrom's WPY portable GUI runs on Windows NT and is modeled
2059 after the Microsoft Foundation Classes. Source and binaries are
2060 available in <URL:ftp://ftp.python.org/pub/python/wpy>.
2062 Sam Rushing <rushing@squirl.oau.org> once announced he knows how to
2063 build Python for the Windows NT on the DEC Alpha AXP.
2065 Note that currently there is no unified compilation environment for
2066 all NT platforms -- hopefully Microsoft will fix this with the release
2069 7.5. Q. Is there a Windows 95 version of Python?
2071 A. The Windows NT versions might work, otherwise the Windows 3.1(1)
2072 version should work (isn't Windows 95 supposed to be backwards
2075 7.6. Q. Is there an OS/2 version of Python?
2077 A. Yes, also see the "pc" subdirectory of the distribution sites,
2078 e.g. <URL:ftp://ftp.python.org/pub/python/pc/>.
2080 7.7. Q. Is there a VMS version of Python?
2082 A. Donn Cave <donn@cac.washington.edu> did a partial port. The
2083 results of his efforts are on public display in
2084 <<URL:ftp://ftp.python.org/pub/python/contrib/vms.tar.gz/>. Someone
2085 else is working on a more complete port, for details watch the list.
2087 7.8. Q. What about IBM mainframes, or other non-UNIX platforms?
2089 A. I haven't heard about these, except I remember hearing about an
2090 OS/9 port and a port to Vxworks (both operating systems for embedded
2091 systems). If you're interested in any of this, go directly to the
2092 newsgroup and ask there, you may find exactly what you need. For
2093 example, a port to MPE/iX 5.0 on HP3000 computers was just announced,
2094 see <URL:http://www.allegro.com/software/>.
2096 7.9. Q. Where are the source or Makefiles for the non-UNIX versions?
2098 A. The standard sources can (almost) be used. Additional sources can
2099 be found in the platform-specific subdirectories of the distribution.
2101 7.10. Q. What is the status and support for the non-UNIX versions?
2103 A. I don't have access to most of these platforms, so in general I am
2104 dependent on material submitted by volunteers(*). However I strive to
2105 integrate all changes needed to get it to compile on a particular
2106 platform back into the standard sources, so porting of the next
2107 version to the various non-UNIX platforms should be easy.
2109 (*) For the Macintosh, that volunteer is me, with help from Jack
2110 Jansen <jack@cwi.nl>.
2112 7.11. Q. I have a PC version but it appears to be only a binary.
2113 Where's the library?
2115 A. You still need to copy the files from the distribution directory
2116 "python/Lib" to your system. If you don't have the full distribution,
2117 you can get the file lib<version>.tar.gz from most ftp sites carrying
2118 Python; this is a subset of the distribution containing just those
2119 files, e.g. <URL:ftp://ftp.python.org/pub/python/src/lib1.1.tar.gz>.
2121 Once you have installed the library, you need to point sys.path to it.
2122 Assuming the library is in C:\misc\python\lib, the following commands
2123 will point your Python interpreter to it (note the doubled backslashes
2124 -- you can also use single forward slashes instead):
2127 >>> sys.path.insert(0, 'C:\\misc\\python\\lib')
2130 For a more permanent effect, set the environment variable PYTHONPATH,
2131 as follows (talking to a DOS prompt):
2133 C> SET PYTHONPATH=C:\misc\python\lib
2135 7.12. Q. Where's the documentation for the Mac or PC version?
2137 A. The documentation for the Unix version also applies to the Mac and
2138 PC versions. Where applicable, differences are indicated in the text.
2140 7.13. Q. The Mac (PC) version doesn't seem to have any facilities for
2141 creating or editing programs apart from entering it interactively, and
2142 there seems to be no way to save code that was entered interactively.
2143 How do I create a Python program on the Mac (PC)?
2145 A. Use an external editor. On the Mac, BBEdit seems to be a popular
2146 no-frills text editor. I work like this: start the interpreter; edit
2147 a module file using BBedit; import and test it in the interpreter;
2148 edit again in BBedit; then use the built-in function reload() to
2149 re-read the imported module; etc.
2151 Regarding the same question for the PC, Kurt Wm. Hemr writes: "While
2152 anyone with a pulse could certainly figure out how to do the same on
2153 MS-Windows, I would recommend the NotGNU Emacs clone for MS-Windows.
2154 Not only can you easily resave and "reload()" from Python after making
2155 changes, but since WinNot auto-copies to the clipboard any text you
2156 select, you can simply select the entire procedure (function) which
2157 you changed in WinNot, switch to QWPython, and shift-ins to reenter
2158 the changed program unit."