blob: 758c26e563b348e62ee1068da09d8c891e725d68 [file] [log] [blame]
Georg Brandl6728c5a2009-10-11 18:31:23 +00001:tocdepth: 2
2
3==================
4General Python FAQ
5==================
6
7.. contents::
8
9General Information
10===================
11
12What is Python?
13---------------
14
15Python is an interpreted, interactive, object-oriented programming language. It
16incorporates modules, exceptions, dynamic typing, very high level dynamic data
17types, and classes. Python combines remarkable power with very clear syntax.
18It has interfaces to many system calls and libraries, as well as to various
19window systems, and is extensible in C or C++. It is also usable as an
20extension language for applications that need a programmable interface.
21Finally, Python is portable: it runs on many Unix variants, on the Mac, and on
22PCs under MS-DOS, Windows, Windows NT, and OS/2.
23
24To find out more, start with :ref:`tutorial-index`. The `Beginner's Guide to
25Python <http://wiki.python.org/moin/BeginnersGuide>`_ links to other
26introductory tutorials and resources for learning Python.
27
28
29What is the Python Software Foundation?
30---------------------------------------
31
32The Python Software Foundation is an independent non-profit organization that
33holds the copyright on Python versions 2.1 and newer. The PSF's mission is to
34advance open source technology related to the Python programming language and to
35publicize the use of Python. The PSF's home page is at
36http://www.python.org/psf/.
37
38Donations to the PSF are tax-exempt in the US. If you use Python and find it
39helpful, please contribute via `the PSF donation page
40<http://www.python.org/psf/donations/>`_.
41
42
43Are there copyright restrictions on the use of Python?
44------------------------------------------------------
45
46You can do anything you want with the source, as long as you leave the
47copyrights in and display those copyrights in any documentation about Python
48that you produce. If you honor the copyright rules, it's OK to use Python for
49commercial use, to sell copies of Python in source or binary form (modified or
50unmodified), or to sell products that incorporate Python in some form. We would
51still like to know about all commercial use of Python, of course.
52
53See `the PSF license page <http://python.org/psf/license/>`_ to find further
54explanations and a link to the full text of the license.
55
56The Python logo is trademarked, and in certain cases permission is required to
57use it. Consult `the Trademark Usage Policy
58<http://www.python.org/psf/trademarks/>`__ for more information.
59
60
61Why was Python created in the first place?
62------------------------------------------
63
64Here's a *very* brief summary of what started it all, written by Guido van
65Rossum:
66
67 I had extensive experience with implementing an interpreted language in the
68 ABC group at CWI, and from working with this group I had learned a lot about
69 language design. This is the origin of many Python features, including the
70 use of indentation for statement grouping and the inclusion of
71 very-high-level data types (although the details are all different in
72 Python).
73
74 I had a number of gripes about the ABC language, but also liked many of its
75 features. It was impossible to extend the ABC language (or its
76 implementation) to remedy my complaints -- in fact its lack of extensibility
77 was one of its biggest problems. I had some experience with using Modula-2+
78 and talked with the designers of Modula-3 and read the Modula-3 report.
79 Modula-3 is the origin of the syntax and semantics used for exceptions, and
80 some other Python features.
81
82 I was working in the Amoeba distributed operating system group at CWI. We
83 needed a better way to do system administration than by writing either C
84 programs or Bourne shell scripts, since Amoeba had its own system call
85 interface which wasn't easily accessible from the Bourne shell. My
86 experience with error handling in Amoeba made me acutely aware of the
87 importance of exceptions as a programming language feature.
88
89 It occurred to me that a scripting language with a syntax like ABC but with
90 access to the Amoeba system calls would fill the need. I realized that it
91 would be foolish to write an Amoeba-specific language, so I decided that I
92 needed a language that was generally extensible.
93
94 During the 1989 Christmas holidays, I had a lot of time on my hand, so I
95 decided to give it a try. During the next year, while still mostly working
96 on it in my own time, Python was used in the Amoeba project with increasing
97 success, and the feedback from colleagues made me add many early
98 improvements.
99
100 In February 1991, after just over a year of development, I decided to post to
101 USENET. The rest is in the ``Misc/HISTORY`` file.
102
103
104What is Python good for?
105------------------------
106
107Python is a high-level general-purpose programming language that can be applied
108to many different classes of problems.
109
110The language comes with a large standard library that covers areas such as
111string processing (regular expressions, Unicode, calculating differences between
112files), Internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, CGI
113programming), software engineering (unit testing, logging, profiling, parsing
114Python code), and operating system interfaces (system calls, filesystems, TCP/IP
115sockets). Look at the table of contents for :ref:`library-index` to get an idea
116of what's available. A wide variety of third-party extensions are also
117available. Consult `the Python Package Index <http://pypi.python.org/pypi>`_ to
118find packages of interest to you.
119
120
121How does the Python version numbering scheme work?
122--------------------------------------------------
123
124Python versions are numbered A.B.C or A.B. A is the major version number -- it
125is only incremented for really major changes in the language. B is the minor
126version number, incremented for less earth-shattering changes. C is the
127micro-level -- it is incremented for each bugfix release. See :pep:`6` for more
128information about bugfix releases.
129
130Not all releases are bugfix releases. In the run-up to a new major release, a
131series of development releases are made, denoted as alpha, beta, or release
132candidate. Alphas are early releases in which interfaces aren't yet finalized;
133it's not unexpected to see an interface change between two alpha releases.
134Betas are more stable, preserving existing interfaces but possibly adding new
135modules, and release candidates are frozen, making no changes except as needed
136to fix critical bugs.
137
138Alpha, beta and release candidate versions have an additional suffix. The
139suffix for an alpha version is "aN" for some small number N, the suffix for a
140beta version is "bN" for some small number N, and the suffix for a release
141candidate version is "cN" for some small number N. In other words, all versions
142labeled 2.0aN precede the versions labeled 2.0bN, which precede versions labeled
1432.0cN, and *those* precede 2.0.
144
145You may also find version numbers with a "+" suffix, e.g. "2.2+". These are
146unreleased versions, built directly from the Subversion trunk. In practice,
147after a final minor release is made, the Subversion trunk is incremented to the
148next minor version, which becomes the "a0" version,
149e.g. "2.4a0".
150
151See also the documentation for ``sys.version``, ``sys.hexversion``, and
152``sys.version_info``.
153
154
155How do I obtain a copy of the Python source?
156--------------------------------------------
157
158The latest Python source distribution is always available from python.org, at
159http://www.python.org/download/. The latest development sources can be obtained
160via anonymous Subversion at http://svn.python.org/projects/python/trunk.
161
162The source distribution is a gzipped tar file containing the complete C source,
163Sphinx-formatted documentation, Python library modules, example programs, and
164several useful pieces of freely distributable software. The source will compile
165and run out of the box on most UNIX platforms.
166
167Consult the `Developer FAQ
168<http://www.python.org/dev/devfaq.html#subversion-svn>`__ for more information
169on getting the source code and compiling it.
170
171
172How do I get documentation on Python?
173-------------------------------------
174
175.. XXX mention py3k
176
177The standard documentation for the current stable version of Python is available
178at http://docs.python.org/. PDF, plain text, and downloadable HTML versions are
179also available at http://docs.python.org/download/.
180
181The documentation is written in reStructuredText and processed by `the Sphinx
182documentation tool <http://sphinx.pocoo.org/>`__. The reStructuredText source
183for the documentation is part of the Python source distribution.
184
185
186I've never programmed before. Is there a Python tutorial?
187---------------------------------------------------------
188
189There are numerous tutorials and books available. The standard documentation
190includes :ref:`tutorial-index`.
191
192Consult `the Beginner's Guide <http://wiki.python.org/moin/BeginnersGuide>`_ to
193find information for beginning Python programmers, including lists of tutorials.
194
195
196Is there a newsgroup or mailing list devoted to Python?
197-------------------------------------------------------
198
199There is a newsgroup, :newsgroup:`comp.lang.python`, and a mailing list,
200`python-list <http://mail.python.org/mailman/listinfo/python-list>`_. The
201newsgroup and mailing list are gatewayed into each other -- if you can read news
202it's unnecessary to subscribe to the mailing list.
203:newsgroup:`comp.lang.python` is high-traffic, receiving hundreds of postings
204every day, and Usenet readers are often more able to cope with this volume.
205
206Announcements of new software releases and events can be found in
207comp.lang.python.announce, a low-traffic moderated list that receives about five
208postings per day. It's available as `the python-announce mailing list
209<http://mail.python.org/mailman/listinfo/python-announce-list>`_.
210
211More info about other mailing lists and newsgroups
212can be found at http://www.python.org/community/lists/.
213
214
215How do I get a beta test version of Python?
216-------------------------------------------
217
218Alpha and beta releases are available from http://www.python.org/download/. All
219releases are announced on the comp.lang.python and comp.lang.python.announce
220newsgroups and on the Python home page at http://www.python.org/; an RSS feed of
221news is available.
222
223You can also access the development version of Python through Subversion. See
224http://www.python.org/dev/devfaq.html#subversion-svn for details.
225
226
227How do I submit bug reports and patches for Python?
228---------------------------------------------------
229
230To report a bug or submit a patch, please use the Roundup installation at
231http://bugs.python.org/.
232
233You must have a Roundup account to report bugs; this makes it possible for us to
234contact you if we have follow-up questions. It will also enable Roundup to send
235you updates as we act on your bug. If you had previously used SourceForge to
236report bugs to Python, you can obtain your Roundup password through Roundup's
237`password reset procedure <http://bugs.python.org/user?@template=forgotten>`_.
238
239.. XXX adapt link to dev guide
240
241For more information on how Python is developed, consult `the Python Developer's
242Guide <http://python.org/dev/>`_.
243
244
245Are there any published articles about Python that I can reference?
246-------------------------------------------------------------------
247
248It's probably best to cite your favorite book about Python.
249
250The very first article about Python was written in 1991 and is now quite
251outdated.
252
253 Guido van Rossum and Jelke de Boer, "Interactively Testing Remote Servers
254 Using the Python Programming Language", CWI Quarterly, Volume 4, Issue 4
255 (December 1991), Amsterdam, pp 283-303.
256
257
258Are there any books on Python?
259------------------------------
260
261Yes, there are many, and more are being published. See the python.org wiki at
262http://wiki.python.org/moin/PythonBooks for a list.
263
264You can also search online bookstores for "Python" and filter out the Monty
265Python references; or perhaps search for "Python" and "language".
266
267
268Where in the world is www.python.org located?
269---------------------------------------------
270
271It's currently in Amsterdam, graciously hosted by `XS4ALL
272<http://www.xs4all.nl>`_. Thanks to Thomas Wouters for his work in arranging
273python.org's hosting.
274
275
276Why is it called Python?
277------------------------
278
279When he began implementing Python, Guido van Rossum was also reading the
280published scripts from `"Monty Python's Flying Circus"
281<http://pythonline.com/>`__, a BBC comedy series from the 1970s. Van Rossum
282thought he needed a name that was short, unique, and slightly mysterious, so he
283decided to call the language Python.
284
285
286Do I have to like "Monty Python's Flying Circus"?
287-------------------------------------------------
288
289No, but it helps. :)
290
291
292Python in the real world
293========================
294
295How stable is Python?
296---------------------
297
298Very stable. New, stable releases have been coming out roughly every 6 to 18
299months since 1991, and this seems likely to continue. Currently there are
300usually around 18 months between major releases.
301
302The developers issue "bugfix" releases of older versions, so the stability of
303existing releases gradually improves. Bugfix releases, indicated by a third
304component of the version number (e.g. 2.5.3, 2.6.2), are managed for stability;
305only fixes for known problems are included in a bugfix release, and it's
306guaranteed that interfaces will remain the same throughout a series of bugfix
307releases.
308
309.. XXX this gets out of date pretty often
310
311The `2.6.4 release <http://python.org/download/>`_ is recommended
312production-ready version at this point in time. Python 3.1 is also considered
313production-ready, but may be less useful, since currently there is more third
314party software available for Python 2 than for Python 3. Python 2 code will
315generally not run unchanged in Python 3.
316
317
318How many people are using Python?
319---------------------------------
320
321There are probably tens of thousands of users, though it's difficult to obtain
322an exact count.
323
324Python is available for free download, so there are no sales figures, and it's
325available from many different sites and packaged with many Linux distributions,
326so download statistics don't tell the whole story either.
327
328The comp.lang.python newsgroup is very active, but not all Python users post to
329the group or even read it.
330
331
332Have any significant projects been done in Python?
333--------------------------------------------------
334
335See http://python.org/about/success for a list of projects that use Python.
336Consulting the proceedings for `past Python conferences
337<http://python.org/community/workshops/>`_ will reveal contributions from many
338different companies and organizations.
339
340High-profile Python projects include `the Mailman mailing list manager
341<http://www.list.org>`_ and `the Zope application server
342<http://www.zope.org>`_. Several Linux distributions, most notably `Red Hat
343<http://www.redhat.com>`_, have written part or all of their installer and
344system administration software in Python. Companies that use Python internally
345include Google, Yahoo, and Lucasfilm Ltd.
346
347
348What new developments are expected for Python in the future?
349------------------------------------------------------------
350
351See http://www.python.org/dev/peps/ for the Python Enhancement Proposals
352(PEPs). PEPs are design documents describing a suggested new feature for Python,
353providing a concise technical specification and a rationale. Look for a PEP
354titled "Python X.Y Release Schedule", where X.Y is a version that hasn't been
355publicly released yet.
356
357New development is discussed on `the python-dev mailing list
358<http://mail.python.org/mailman/listinfo/python-dev/>`_.
359
360
361Is it reasonable to propose incompatible changes to Python?
362-----------------------------------------------------------
363
364In general, no. There are already millions of lines of Python code around the
365world, so any change in the language that invalidates more than a very small
366fraction of existing programs has to be frowned upon. Even if you can provide a
367conversion program, there's still the problem of updating all documentation;
368many books have been written about Python, and we don't want to invalidate them
369all at a single stroke.
370
371Providing a gradual upgrade path is necessary if a feature has to be changed.
372:pep:`5` describes the procedure followed for introducing backward-incompatible
373changes while minimizing disruption for users.
374
375
376Is Python Y2K (Year 2000) Compliant?
377------------------------------------
378
379.. remove this question?
380
381As of August, 2003 no major problems have been reported and Y2K compliance seems
382to be a non-issue.
383
384Python does very few date calculations and for those it does perform relies on
385the C library functions. Python generally represents times either as seconds
386since 1970 or as a ``(year, month, day, ...)`` tuple where the year is expressed
387with four digits, which makes Y2K bugs unlikely. So as long as your C library
388is okay, Python should be okay. Of course, it's possible that a particular
389application written in Python makes assumptions about 2-digit years.
390
391Because Python is available free of charge, there are no absolute guarantees.
392If there *are* unforeseen problems, liability is the user's problem rather than
393the developers', and there is nobody you can sue for damages. The Python
394copyright notice contains the following disclaimer:
395
396 4. PSF is making Python 2.3 available to Licensee on an "AS IS"
397 basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY
398 WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY
399 REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
400 PURPOSE OR THAT THE USE OF PYTHON 2.3 WILL NOT INFRINGE ANY THIRD PARTY
401 RIGHTS.
402
403 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
404 2.3 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
405 A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.3,
406 OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
407
408The good news is that *if* you encounter a problem, you have full source
409available to track it down and fix it. This is one advantage of an open source
410programming environment.
411
412
413Is Python a good language for beginning programmers?
414----------------------------------------------------
415
416Yes.
417
418It is still common to start students with a procedural and statically typed
419language such as Pascal, C, or a subset of C++ or Java. Students may be better
420served by learning Python as their first language. Python has a very simple and
421consistent syntax and a large standard library and, most importantly, using
422Python in a beginning programming course lets students concentrate on important
423programming skills such as problem decomposition and data type design. With
424Python, students can be quickly introduced to basic concepts such as loops and
425procedures. They can probably even work with user-defined objects in their very
426first course.
427
428For a student who has never programmed before, using a statically typed language
429seems unnatural. It presents additional complexity that the student must master
430and slows the pace of the course. The students are trying to learn to think
431like a computer, decompose problems, design consistent interfaces, and
432encapsulate data. While learning to use a statically typed language is
433important in the long term, it is not necessarily the best topic to address in
434the students' first programming course.
435
436Many other aspects of Python make it a good first language. Like Java, Python
437has a large standard library so that students can be assigned programming
438projects very early in the course that *do* something. Assignments aren't
439restricted to the standard four-function calculator and check balancing
440programs. By using the standard library, students can gain the satisfaction of
441working on realistic applications as they learn the fundamentals of programming.
442Using the standard library also teaches students about code reuse. Third-party
443modules such as PyGame are also helpful in extending the students' reach.
444
445Python's interactive interpreter enables students to test language features
446while they're programming. They can keep a window with the interpreter running
447while they enter their program's source in another window. If they can't
448remember the methods for a list, they can do something like this::
449
450 >>> L = []
451 >>> dir(L)
452 ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
453 'reverse', 'sort']
454 >>> help(L.append)
455 Help on built-in function append:
456
457 append(...)
458 L.append(object) -- append object to end
459 >>> L.append(1)
460 >>> L
461 [1]
462
463With the interpreter, documentation is never far from the student as he's
464programming.
465
466There are also good IDEs for Python. IDLE is a cross-platform IDE for Python
467that is written in Python using Tkinter. PythonWin is a Windows-specific IDE.
468Emacs users will be happy to know that there is a very good Python mode for
469Emacs. All of these programming environments provide syntax highlighting,
470auto-indenting, and access to the interactive interpreter while coding. Consult
471http://www.python.org/editors/ for a full list of Python editing environments.
472
473If you want to discuss Python's use in education, you may be interested in
474joining `the edu-sig mailing list
475<http://python.org/community/sigs/current/edu-sig>`_.
476
477
478Upgrading Python
479================
480
481What is this bsddb185 module my application keeps complaining about?
482--------------------------------------------------------------------
483
484.. XXX remove this question?
485
486Starting with Python2.3, the distribution includes the `PyBSDDB package
487<http://pybsddb.sf.net/>` as a replacement for the old bsddb module. It
488includes functions which provide backward compatibility at the API level, but
489requires a newer version of the underlying `Berkeley DB
490<http://www.sleepycat.com>`_ library. Files created with the older bsddb module
491can't be opened directly using the new module.
492
493Using your old version of Python and a pair of scripts which are part of Python
4942.3 (db2pickle.py and pickle2db.py, in the Tools/scripts directory) you can
495convert your old database files to the new format. Using your old Python
496version, run the db2pickle.py script to convert it to a pickle, e.g.::
497
498 python2.2 <pathto>/db2pickley.py database.db database.pck
499
500Rename your database file::
501
502 mv database.db olddatabase.db
503
504Now convert the pickle file to a new format database::
505
506 python <pathto>/pickle2db.py database.db database.pck
507
508The precise commands you use will vary depending on the particulars of your
509installation. For full details about operation of these two scripts check the
510doc string at the start of each one.