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