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