~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-3.5.1-docs-html/_sources/faq/general.txt

  • Committer: Dave Kuhlman
  • Date: 2017-04-15 16:24:56 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20170415162456-iav9vozzg4iwqwv3
Updated docs

Show diffs side-by-side

added added

removed removed

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