• 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.  It supports multiple programming paradigms beyond
21object-oriented programming, such as procedural and functional programming.
22Python combines remarkable power with very clear syntax. It has interfaces to
23many system calls and libraries, as well as to various window systems, and is
24extensible in C or C++.  It is also usable as an extension language for
25applications that need a programmable interface. Finally, Python is portable:
26it runs on many Unix variants including Linux and macOS, and on Windows.
27
28To find out more, start with :ref:`tutorial-index`.  The `Beginner's Guide to
29Python <https://wiki.python.org/moin/BeginnersGuide>`_ links to other
30introductory tutorials and resources for learning Python.
31
32
33What is the Python Software Foundation?
34---------------------------------------
35
36The Python Software Foundation is an independent non-profit organization that
37holds the copyright on Python versions 2.1 and newer.  The PSF's mission is to
38advance open source technology related to the Python programming language and to
39publicize the use of Python.  The PSF's home page is at
40https://www.python.org/psf/.
41
42Donations to the PSF are tax-exempt in the US.  If you use Python and find it
43helpful, please contribute via `the PSF donation page
44<https://www.python.org/psf/donations/>`_.
45
46
47Are there copyright restrictions on the use of Python?
48------------------------------------------------------
49
50You can do anything you want with the source, as long as you leave the
51copyrights in and display those copyrights in any documentation about Python
52that you produce.  If you honor the copyright rules, it's OK to use Python for
53commercial use, to sell copies of Python in source or binary form (modified or
54unmodified), or to sell products that incorporate Python in some form.  We would
55still like to know about all commercial use of Python, of course.
56
57See `the PSF license page <https://www.python.org/psf/license/>`_ to find further
58explanations and a link to the full text of the license.
59
60The Python logo is trademarked, and in certain cases permission is required to
61use it.  Consult `the Trademark Usage Policy
62<https://www.python.org/psf/trademarks/>`__ for more information.
63
64
65Why was Python created in the first place?
66------------------------------------------
67
68Here's a *very* brief summary of what started it all, written by Guido van
69Rossum:
70
71   I had extensive experience with implementing an interpreted language in the
72   ABC group at CWI, and from working with this group I had learned a lot about
73   language design.  This is the origin of many Python features, including the
74   use of indentation for statement grouping and the inclusion of
75   very-high-level data types (although the details are all different in
76   Python).
77
78   I had a number of gripes about the ABC language, but also liked many of its
79   features.  It was impossible to extend the ABC language (or its
80   implementation) to remedy my complaints -- in fact its lack of extensibility
81   was one of its biggest problems.  I had some experience with using Modula-2+
82   and talked with the designers of Modula-3 and read the Modula-3 report.
83   Modula-3 is the origin of the syntax and semantics used for exceptions, and
84   some other Python features.
85
86   I was working in the Amoeba distributed operating system group at CWI.  We
87   needed a better way to do system administration than by writing either C
88   programs or Bourne shell scripts, since Amoeba had its own system call
89   interface which wasn't easily accessible from the Bourne shell.  My
90   experience with error handling in Amoeba made me acutely aware of the
91   importance of exceptions as a programming language feature.
92
93   It occurred to me that a scripting language with a syntax like ABC but with
94   access to the Amoeba system calls would fill the need.  I realized that it
95   would be foolish to write an Amoeba-specific language, so I decided that I
96   needed a language that was generally extensible.
97
98   During the 1989 Christmas holidays, I had a lot of time on my hand, so I
99   decided to give it a try.  During the next year, while still mostly working
100   on it in my own time, Python was used in the Amoeba project with increasing
101   success, and the feedback from colleagues made me add many early
102   improvements.
103
104   In February 1991, after just over a year of development, I decided to post to
105   USENET.  The rest is in the ``Misc/HISTORY`` file.
106
107
108What is Python good for?
109------------------------
110
111Python is a high-level general-purpose programming language that can be applied
112to many different classes of problems.
113
114The language comes with a large standard library that covers areas such as
115string processing (regular expressions, Unicode, calculating differences between
116files), internet protocols (HTTP, FTP, SMTP, XML-RPC, POP, IMAP, CGI
117programming), software engineering (unit testing, logging, profiling, parsing
118Python code), and operating system interfaces (system calls, filesystems, TCP/IP
119sockets).  Look at the table of contents for :ref:`library-index` to get an idea
120of what's available.  A wide variety of third-party extensions are also
121available.  Consult `the Python Package Index <https://pypi.org>`_ to
122find packages of interest to you.
123
124
125How does the Python version numbering scheme work?
126--------------------------------------------------
127
128Python versions are numbered A.B.C or A.B.  A is the major version number -- it
129is only incremented for really major changes in the language.  B is the minor
130version number, incremented for less earth-shattering changes.  C is the
131micro-level -- it is incremented for each bugfix release.  See :pep:`6` for more
132information about bugfix releases.
133
134Not all releases are bugfix releases.  In the run-up to a new major release, a
135series of development releases are made, denoted as alpha, beta, or release
136candidate.  Alphas are early releases in which interfaces aren't yet finalized;
137it's not unexpected to see an interface change between two alpha releases.
138Betas are more stable, preserving existing interfaces but possibly adding new
139modules, and release candidates are frozen, making no changes except as needed
140to fix critical bugs.
141
142Alpha, beta and release candidate versions have an additional suffix.  The
143suffix for an alpha version is "aN" for some small number N, the suffix for a
144beta version is "bN" for some small number N, and the suffix for a release
145candidate version is "rcN" for some small number N.  In other words, all versions
146labeled 2.0aN precede the versions labeled 2.0bN, which precede versions labeled
1472.0rcN, and *those* precede 2.0.
148
149You may also find version numbers with a "+" suffix, e.g. "2.2+".  These are
150unreleased versions, built directly from the CPython development repository.  In
151practice, after a final minor release is made, the version is incremented to the
152next minor version, which becomes the "a0" version, e.g. "2.4a0".
153
154See also the documentation for :data:`sys.version`, :data:`sys.hexversion`, and
155:data:`sys.version_info`.
156
157
158How do I obtain a copy of the Python source?
159--------------------------------------------
160
161The latest Python source distribution is always available from python.org, at
162https://www.python.org/downloads/.  The latest development sources can be obtained
163at https://github.com/python/cpython/.
164
165The source distribution is a gzipped tar file containing the complete C source,
166Sphinx-formatted documentation, Python library modules, example programs, and
167several useful pieces of freely distributable software.  The source will compile
168and run out of the box on most UNIX platforms.
169
170Consult the `Getting Started section of the Python Developer's Guide
171<https://devguide.python.org/setup/>`__ for more
172information on getting the source code and compiling it.
173
174
175How do I get documentation on Python?
176-------------------------------------
177
178.. XXX mention py3k
179
180The standard documentation for the current stable version of Python is available
181at https://docs.python.org/3/.  PDF, plain text, and downloadable HTML versions are
182also available at https://docs.python.org/3/download.html.
183
184The documentation is written in reStructuredText and processed by `the Sphinx
185documentation tool <http://sphinx-doc.org/>`__.  The reStructuredText source for
186the documentation is part of the Python source distribution.
187
188
189I've never programmed before. Is there a Python tutorial?
190---------------------------------------------------------
191
192There are numerous tutorials and books available.  The standard documentation
193includes :ref:`tutorial-index`.
194
195Consult `the Beginner's Guide <https://wiki.python.org/moin/BeginnersGuide>`_ to
196find information for beginning Python programmers, including lists of tutorials.
197
198
199Is there a newsgroup or mailing list devoted to Python?
200-------------------------------------------------------
201
202There is a newsgroup, :newsgroup:`comp.lang.python`, and a mailing list,
203`python-list <https://mail.python.org/mailman/listinfo/python-list>`_.  The
204newsgroup and mailing list are gatewayed into each other -- if you can read news
205it's unnecessary to subscribe to the mailing list.
206:newsgroup:`comp.lang.python` is high-traffic, receiving hundreds of postings
207every day, and Usenet readers are often more able to cope with this volume.
208
209Announcements of new software releases and events can be found in
210comp.lang.python.announce, a low-traffic moderated list that receives about five
211postings per day.  It's available as `the python-announce mailing list
212<https://mail.python.org/mailman/listinfo/python-announce-list>`_.
213
214More info about other mailing lists and newsgroups
215can be found at https://www.python.org/community/lists/.
216
217
218How do I get a beta test version of Python?
219-------------------------------------------
220
221Alpha and beta releases are available from https://www.python.org/downloads/.  All
222releases are announced on the comp.lang.python and comp.lang.python.announce
223newsgroups and on the Python home page at https://www.python.org/; an RSS feed of
224news is available.
225
226You can also access the development version of Python through Git.  See
227`The Python Developer's Guide <https://devguide.python.org/>`_ for details.
228
229
230How do I submit bug reports and patches for Python?
231---------------------------------------------------
232
233To report a bug or submit a patch, please use the Roundup installation at
234https://bugs.python.org/.
235
236You must have a Roundup account to report bugs; this makes it possible for us to
237contact you if we have follow-up questions.  It will also enable Roundup to send
238you updates as we act on your bug. If you had previously used SourceForge to
239report bugs to Python, you can obtain your Roundup password through Roundup's
240`password reset procedure <https://bugs.python.org/user?@template=forgotten>`_.
241
242For more information on how Python is developed, consult `the Python Developer's
243Guide <https://devguide.python.org/>`_.
244
245
246Are there any published articles about Python that I can reference?
247-------------------------------------------------------------------
248
249It's probably best to cite your favorite book about Python.
250
251The very first article about Python was written in 1991 and is now quite
252outdated.
253
254    Guido van Rossum and Jelke de Boer, "Interactively Testing Remote Servers
255    Using the Python Programming Language", CWI Quarterly, Volume 4, Issue 4
256    (December 1991), Amsterdam, pp 283--303.
257
258
259Are there any books on Python?
260------------------------------
261
262Yes, there are many, and more are being published.  See the python.org wiki at
263https://wiki.python.org/moin/PythonBooks for a list.
264
265You can also search online bookstores for "Python" and filter out the Monty
266Python references; or perhaps search for "Python" and "language".
267
268
269Where in the world is www.python.org located?
270---------------------------------------------
271
272The Python project's infrastructure is located all over the world and is managed
273by the Python Infrastructure Team. Details `here <http://infra.psf.io>`__.
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<https://en.wikipedia.org/wiki/Monty_Python>`__, 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.  As of version 3.9,
300Python will have a major new release every 12 months (:pep:`602`).
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. 3.5.3, 3.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
309The latest stable releases can always be found on the `Python download page
310<https://www.python.org/downloads/>`_.  There are two production-ready versions
311of Python: 2.x and 3.x. The recommended version is 3.x, which is supported by
312most widely used libraries.  Although 2.x is still widely used, `it is not
313maintained anymore <https://www.python.org/dev/peps/pep-0373/>`_.
314
315How many people are using Python?
316---------------------------------
317
318There are probably millions of users, though it's difficult to obtain an exact
319count.
320
321Python is available for free download, so there are no sales figures, and it's
322available from many different sites and packaged with many Linux distributions,
323so download statistics don't tell the whole story either.
324
325The comp.lang.python newsgroup is very active, but not all Python users post to
326the group or even read it.
327
328
329Have any significant projects been done in Python?
330--------------------------------------------------
331
332See https://www.python.org/about/success for a list of projects that use Python.
333Consulting the proceedings for `past Python conferences
334<https://www.python.org/community/workshops/>`_ will reveal contributions from many
335different companies and organizations.
336
337High-profile Python projects include `the Mailman mailing list manager
338<http://www.list.org>`_ and `the Zope application server
339<http://www.zope.org>`_.  Several Linux distributions, most notably `Red Hat
340<https://www.redhat.com>`_, have written part or all of their installer and
341system administration software in Python.  Companies that use Python internally
342include Google, Yahoo, and Lucasfilm Ltd.
343
344
345What new developments are expected for Python in the future?
346------------------------------------------------------------
347
348See https://www.python.org/dev/peps/ for the Python Enhancement Proposals
349(PEPs). PEPs are design documents describing a suggested new feature for Python,
350providing a concise technical specification and a rationale.  Look for a PEP
351titled "Python X.Y Release Schedule", where X.Y is a version that hasn't been
352publicly released yet.
353
354New development is discussed on `the python-dev mailing list
355<https://mail.python.org/mailman/listinfo/python-dev/>`_.
356
357
358Is it reasonable to propose incompatible changes to Python?
359-----------------------------------------------------------
360
361In general, no.  There are already millions of lines of Python code around the
362world, so any change in the language that invalidates more than a very small
363fraction of existing programs has to be frowned upon.  Even if you can provide a
364conversion program, there's still the problem of updating all documentation;
365many books have been written about Python, and we don't want to invalidate them
366all at a single stroke.
367
368Providing a gradual upgrade path is necessary if a feature has to be changed.
369:pep:`5` describes the procedure followed for introducing backward-incompatible
370changes while minimizing disruption for users.
371
372
373Is Python a good language for beginning programmers?
374----------------------------------------------------
375
376Yes.
377
378It is still common to start students with a procedural and statically typed
379language such as Pascal, C, or a subset of C++ or Java.  Students may be better
380served by learning Python as their first language.  Python has a very simple and
381consistent syntax and a large standard library and, most importantly, using
382Python in a beginning programming course lets students concentrate on important
383programming skills such as problem decomposition and data type design.  With
384Python, students can be quickly introduced to basic concepts such as loops and
385procedures.  They can probably even work with user-defined objects in their very
386first course.
387
388For a student who has never programmed before, using a statically typed language
389seems unnatural.  It presents additional complexity that the student must master
390and slows the pace of the course.  The students are trying to learn to think
391like a computer, decompose problems, design consistent interfaces, and
392encapsulate data.  While learning to use a statically typed language is
393important in the long term, it is not necessarily the best topic to address in
394the students' first programming course.
395
396Many other aspects of Python make it a good first language.  Like Java, Python
397has a large standard library so that students can be assigned programming
398projects very early in the course that *do* something.  Assignments aren't
399restricted to the standard four-function calculator and check balancing
400programs.  By using the standard library, students can gain the satisfaction of
401working on realistic applications as they learn the fundamentals of programming.
402Using the standard library also teaches students about code reuse.  Third-party
403modules such as PyGame are also helpful in extending the students' reach.
404
405Python's interactive interpreter enables students to test language features
406while they're programming.  They can keep a window with the interpreter running
407while they enter their program's source in another window.  If they can't
408remember the methods for a list, they can do something like this::
409
410   >>> L = []
411   >>> dir(L) # doctest: +NORMALIZE_WHITESPACE
412   ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
413   '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
414   '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
415   '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
416   '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
417   '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
418   '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
419   'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
420   'reverse', 'sort']
421   >>> [d for d in dir(L) if '__' not in d]
422   ['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
423
424   >>> help(L.append)
425   Help on built-in function append:
426   <BLANKLINE>
427   append(...)
428       L.append(object) -> None -- append object to end
429   <BLANKLINE>
430   >>> L.append(1)
431   >>> L
432   [1]
433
434With the interpreter, documentation is never far from the student as they are
435programming.
436
437There are also good IDEs for Python.  IDLE is a cross-platform IDE for Python
438that is written in Python using Tkinter.  PythonWin is a Windows-specific IDE.
439Emacs users will be happy to know that there is a very good Python mode for
440Emacs.  All of these programming environments provide syntax highlighting,
441auto-indenting, and access to the interactive interpreter while coding.  Consult
442`the Python wiki <https://wiki.python.org/moin/PythonEditors>`_ for a full list
443of Python editing environments.
444
445If you want to discuss Python's use in education, you may be interested in
446joining `the edu-sig mailing list
447<https://www.python.org/community/sigs/current/edu-sig>`_.
448