annotate Misc/FAQ @ 3720:b341def4eef8 legacy-trunk

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