[2] | 1 | :tocdepth: 2
|
---|
| 2 |
|
---|
| 3 | ==================
|
---|
| 4 | General Python FAQ
|
---|
| 5 | ==================
|
---|
| 6 |
|
---|
[391] | 7 | .. only:: html
|
---|
[2] | 8 |
|
---|
[391] | 9 | .. contents::
|
---|
| 10 |
|
---|
| 11 |
|
---|
[2] | 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 | PCs under MS-DOS, Windows, Windows NT, and OS/2.
|
---|
| 26 |
|
---|
| 27 | To find out more, start with :ref:`tutorial-index`. The `Beginner's Guide to
|
---|
| 28 | Python <http://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 | http://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 | <http://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 <http://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 | <http://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 <http://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 ``sys.version``, ``sys.hexversion``, and
|
---|
| 155 | ``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 | http://www.python.org/download/. The latest development sources can be obtained
|
---|
[391] | 163 | via anonymous Mercurial access at http://hg.python.org/cpython.
|
---|
[2] | 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 |
|
---|
[391] | 170 | Consult the `Developer FAQ <http://docs.python.org/devguide/faq>`__ for more
|
---|
[2] | 171 | information on getting the source code and compiling it.
|
---|
| 172 |
|
---|
| 173 |
|
---|
| 174 | How do I get documentation on Python?
|
---|
| 175 | -------------------------------------
|
---|
| 176 |
|
---|
| 177 | .. XXX mention py3k
|
---|
| 178 |
|
---|
| 179 | The standard documentation for the current stable version of Python is available
|
---|
| 180 | at http://docs.python.org/. PDF, plain text, and downloadable HTML versions are
|
---|
| 181 | also available at http://docs.python.org/download.html.
|
---|
| 182 |
|
---|
| 183 | The documentation is written in reStructuredText and processed by `the Sphinx
|
---|
| 184 | documentation tool <http://sphinx.pocoo.org/>`__. The reStructuredText source
|
---|
| 185 | for the documentation is part of the Python source distribution.
|
---|
| 186 |
|
---|
| 187 |
|
---|
| 188 | I've never programmed before. Is there a Python tutorial?
|
---|
| 189 | ---------------------------------------------------------
|
---|
| 190 |
|
---|
| 191 | There are numerous tutorials and books available. The standard documentation
|
---|
| 192 | includes :ref:`tutorial-index`.
|
---|
| 193 |
|
---|
| 194 | Consult `the Beginner's Guide <http://wiki.python.org/moin/BeginnersGuide>`_ to
|
---|
| 195 | find information for beginning Python programmers, including lists of tutorials.
|
---|
| 196 |
|
---|
| 197 |
|
---|
| 198 | Is there a newsgroup or mailing list devoted to Python?
|
---|
| 199 | -------------------------------------------------------
|
---|
| 200 |
|
---|
| 201 | There is a newsgroup, :newsgroup:`comp.lang.python`, and a mailing list,
|
---|
| 202 | `python-list <http://mail.python.org/mailman/listinfo/python-list>`_. The
|
---|
| 203 | newsgroup and mailing list are gatewayed into each other -- if you can read news
|
---|
| 204 | it's unnecessary to subscribe to the mailing list.
|
---|
| 205 | :newsgroup:`comp.lang.python` is high-traffic, receiving hundreds of postings
|
---|
| 206 | every day, and Usenet readers are often more able to cope with this volume.
|
---|
| 207 |
|
---|
| 208 | Announcements of new software releases and events can be found in
|
---|
| 209 | comp.lang.python.announce, a low-traffic moderated list that receives about five
|
---|
| 210 | postings per day. It's available as `the python-announce mailing list
|
---|
| 211 | <http://mail.python.org/mailman/listinfo/python-announce-list>`_.
|
---|
| 212 |
|
---|
| 213 | More info about other mailing lists and newsgroups
|
---|
| 214 | can be found at http://www.python.org/community/lists/.
|
---|
| 215 |
|
---|
| 216 |
|
---|
| 217 | How do I get a beta test version of Python?
|
---|
| 218 | -------------------------------------------
|
---|
| 219 |
|
---|
| 220 | Alpha and beta releases are available from http://www.python.org/download/. All
|
---|
| 221 | releases are announced on the comp.lang.python and comp.lang.python.announce
|
---|
| 222 | newsgroups and on the Python home page at http://www.python.org/; an RSS feed of
|
---|
| 223 | news is available.
|
---|
| 224 |
|
---|
| 225 | You can also access the development version of Python through Subversion. See
|
---|
[391] | 226 | http://docs.python.org/devguide/faq for details.
|
---|
[2] | 227 |
|
---|
| 228 |
|
---|
| 229 | How do I submit bug reports and patches for Python?
|
---|
| 230 | ---------------------------------------------------
|
---|
| 231 |
|
---|
| 232 | To report a bug or submit a patch, please use the Roundup installation at
|
---|
| 233 | http://bugs.python.org/.
|
---|
| 234 |
|
---|
| 235 | You must have a Roundup account to report bugs; this makes it possible for us to
|
---|
| 236 | contact you if we have follow-up questions. It will also enable Roundup to send
|
---|
| 237 | you updates as we act on your bug. If you had previously used SourceForge to
|
---|
| 238 | report bugs to Python, you can obtain your Roundup password through Roundup's
|
---|
| 239 | `password reset procedure <http://bugs.python.org/user?@template=forgotten>`_.
|
---|
| 240 |
|
---|
| 241 | For more information on how Python is developed, consult `the Python Developer's
|
---|
[391] | 242 | Guide <http://docs.python.org/devguide/>`_.
|
---|
[2] | 243 |
|
---|
| 244 |
|
---|
| 245 | Are there any published articles about Python that I can reference?
|
---|
| 246 | -------------------------------------------------------------------
|
---|
| 247 |
|
---|
| 248 | It's probably best to cite your favorite book about Python.
|
---|
| 249 |
|
---|
| 250 | The very first article about Python was written in 1991 and is now quite
|
---|
| 251 | outdated.
|
---|
| 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 |
|
---|
| 258 | Are there any books on Python?
|
---|
| 259 | ------------------------------
|
---|
| 260 |
|
---|
| 261 | Yes, there are many, and more are being published. See the python.org wiki at
|
---|
| 262 | http://wiki.python.org/moin/PythonBooks for a list.
|
---|
| 263 |
|
---|
| 264 | You can also search online bookstores for "Python" and filter out the Monty
|
---|
| 265 | Python references; or perhaps search for "Python" and "language".
|
---|
| 266 |
|
---|
| 267 |
|
---|
| 268 | Where in the world is www.python.org located?
|
---|
| 269 | ---------------------------------------------
|
---|
| 270 |
|
---|
| 271 | It's currently in Amsterdam, graciously hosted by `XS4ALL
|
---|
| 272 | <http://www.xs4all.nl>`_. Thanks to Thomas Wouters for his work in arranging
|
---|
| 273 | python.org's hosting.
|
---|
| 274 |
|
---|
| 275 |
|
---|
| 276 | Why is it called Python?
|
---|
| 277 | ------------------------
|
---|
| 278 |
|
---|
| 279 | When he began implementing Python, Guido van Rossum was also reading the
|
---|
| 280 | published scripts from `"Monty Python's Flying Circus"
|
---|
| 281 | <http://pythonline.com/>`__, a BBC comedy series from the 1970s. Van Rossum
|
---|
| 282 | thought he needed a name that was short, unique, and slightly mysterious, so he
|
---|
| 283 | decided to call the language Python.
|
---|
| 284 |
|
---|
| 285 |
|
---|
| 286 | Do I have to like "Monty Python's Flying Circus"?
|
---|
| 287 | -------------------------------------------------
|
---|
| 288 |
|
---|
| 289 | No, but it helps. :)
|
---|
| 290 |
|
---|
| 291 |
|
---|
| 292 | Python in the real world
|
---|
| 293 | ========================
|
---|
| 294 |
|
---|
| 295 | How stable is Python?
|
---|
| 296 | ---------------------
|
---|
| 297 |
|
---|
| 298 | Very stable. New, stable releases have been coming out roughly every 6 to 18
|
---|
| 299 | months since 1991, and this seems likely to continue. Currently there are
|
---|
| 300 | usually around 18 months between major releases.
|
---|
| 301 |
|
---|
| 302 | The developers issue "bugfix" releases of older versions, so the stability of
|
---|
| 303 | existing releases gradually improves. Bugfix releases, indicated by a third
|
---|
| 304 | component of the version number (e.g. 2.5.3, 2.6.2), are managed for stability;
|
---|
| 305 | only fixes for known problems are included in a bugfix release, and it's
|
---|
| 306 | guaranteed that interfaces will remain the same throughout a series of bugfix
|
---|
| 307 | releases.
|
---|
| 308 |
|
---|
| 309 | The latest stable releases can always be found on the `Python download page
|
---|
| 310 | <http://python.org/download/>`_. There are two recommended production-ready
|
---|
| 311 | versions at this point in time, because at the moment there are two branches of
|
---|
| 312 | stable releases: 2.x and 3.x. Python 3.x may be less useful than 2.x, since
|
---|
| 313 | currently there is more third party software available for Python 2 than for
|
---|
| 314 | Python 3. Python 2 code will generally not run unchanged in Python 3.
|
---|
| 315 |
|
---|
| 316 |
|
---|
| 317 | How many people are using Python?
|
---|
| 318 | ---------------------------------
|
---|
| 319 |
|
---|
| 320 | There are probably tens of thousands of users, though it's difficult to obtain
|
---|
| 321 | an exact count.
|
---|
| 322 |
|
---|
| 323 | Python is available for free download, so there are no sales figures, and it's
|
---|
| 324 | available from many different sites and packaged with many Linux distributions,
|
---|
| 325 | so download statistics don't tell the whole story either.
|
---|
| 326 |
|
---|
| 327 | The comp.lang.python newsgroup is very active, but not all Python users post to
|
---|
| 328 | the group or even read it.
|
---|
| 329 |
|
---|
| 330 |
|
---|
| 331 | Have any significant projects been done in Python?
|
---|
| 332 | --------------------------------------------------
|
---|
| 333 |
|
---|
| 334 | See http://python.org/about/success for a list of projects that use Python.
|
---|
| 335 | Consulting the proceedings for `past Python conferences
|
---|
| 336 | <http://python.org/community/workshops/>`_ will reveal contributions from many
|
---|
| 337 | different companies and organizations.
|
---|
| 338 |
|
---|
| 339 | High-profile Python projects include `the Mailman mailing list manager
|
---|
| 340 | <http://www.list.org>`_ and `the Zope application server
|
---|
| 341 | <http://www.zope.org>`_. Several Linux distributions, most notably `Red Hat
|
---|
| 342 | <http://www.redhat.com>`_, have written part or all of their installer and
|
---|
| 343 | system administration software in Python. Companies that use Python internally
|
---|
| 344 | include Google, Yahoo, and Lucasfilm Ltd.
|
---|
| 345 |
|
---|
| 346 |
|
---|
| 347 | What new developments are expected for Python in the future?
|
---|
| 348 | ------------------------------------------------------------
|
---|
| 349 |
|
---|
| 350 | See http://www.python.org/dev/peps/ for the Python Enhancement Proposals
|
---|
| 351 | (PEPs). PEPs are design documents describing a suggested new feature for Python,
|
---|
| 352 | providing a concise technical specification and a rationale. Look for a PEP
|
---|
| 353 | titled "Python X.Y Release Schedule", where X.Y is a version that hasn't been
|
---|
| 354 | publicly released yet.
|
---|
| 355 |
|
---|
| 356 | New development is discussed on `the python-dev mailing list
|
---|
| 357 | <http://mail.python.org/mailman/listinfo/python-dev/>`_.
|
---|
| 358 |
|
---|
| 359 |
|
---|
| 360 | Is it reasonable to propose incompatible changes to Python?
|
---|
| 361 | -----------------------------------------------------------
|
---|
| 362 |
|
---|
| 363 | In general, no. There are already millions of lines of Python code around the
|
---|
| 364 | world, so any change in the language that invalidates more than a very small
|
---|
| 365 | fraction of existing programs has to be frowned upon. Even if you can provide a
|
---|
| 366 | conversion program, there's still the problem of updating all documentation;
|
---|
| 367 | many books have been written about Python, and we don't want to invalidate them
|
---|
| 368 | all at a single stroke.
|
---|
| 369 |
|
---|
| 370 | Providing a gradual upgrade path is necessary if a feature has to be changed.
|
---|
| 371 | :pep:`5` describes the procedure followed for introducing backward-incompatible
|
---|
| 372 | changes while minimizing disruption for users.
|
---|
| 373 |
|
---|
| 374 |
|
---|
| 375 | Is Python Y2K (Year 2000) Compliant?
|
---|
| 376 | ------------------------------------
|
---|
| 377 |
|
---|
| 378 | .. remove this question?
|
---|
| 379 |
|
---|
| 380 | As of August, 2003 no major problems have been reported and Y2K compliance seems
|
---|
| 381 | to be a non-issue.
|
---|
| 382 |
|
---|
| 383 | Python does very few date calculations and for those it does perform relies on
|
---|
| 384 | the C library functions. Python generally represents times either as seconds
|
---|
| 385 | since 1970 or as a ``(year, month, day, ...)`` tuple where the year is expressed
|
---|
| 386 | with four digits, which makes Y2K bugs unlikely. So as long as your C library
|
---|
| 387 | is okay, Python should be okay. Of course, it's possible that a particular
|
---|
| 388 | application written in Python makes assumptions about 2-digit years.
|
---|
| 389 |
|
---|
| 390 | Because Python is available free of charge, there are no absolute guarantees.
|
---|
| 391 | If there *are* unforeseen problems, liability is the user's problem rather than
|
---|
| 392 | the developers', and there is nobody you can sue for damages. The Python
|
---|
| 393 | copyright notice contains the following disclaimer:
|
---|
| 394 |
|
---|
| 395 | 4. PSF is making Python 2.3 available to Licensee on an "AS IS"
|
---|
| 396 | basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY
|
---|
| 397 | WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY
|
---|
| 398 | REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR
|
---|
| 399 | PURPOSE OR THAT THE USE OF PYTHON 2.3 WILL NOT INFRINGE ANY THIRD PARTY
|
---|
| 400 | RIGHTS.
|
---|
| 401 |
|
---|
| 402 | 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
|
---|
| 403 | 2.3 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
|
---|
| 404 | A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 2.3,
|
---|
| 405 | OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
|
---|
| 406 |
|
---|
| 407 | The good news is that *if* you encounter a problem, you have full source
|
---|
| 408 | available to track it down and fix it. This is one advantage of an open source
|
---|
| 409 | programming environment.
|
---|
| 410 |
|
---|
| 411 |
|
---|
| 412 | Is Python a good language for beginning programmers?
|
---|
| 413 | ----------------------------------------------------
|
---|
| 414 |
|
---|
| 415 | Yes.
|
---|
| 416 |
|
---|
| 417 | It is still common to start students with a procedural and statically typed
|
---|
| 418 | language such as Pascal, C, or a subset of C++ or Java. Students may be better
|
---|
| 419 | served by learning Python as their first language. Python has a very simple and
|
---|
| 420 | consistent syntax and a large standard library and, most importantly, using
|
---|
| 421 | Python in a beginning programming course lets students concentrate on important
|
---|
| 422 | programming skills such as problem decomposition and data type design. With
|
---|
| 423 | Python, students can be quickly introduced to basic concepts such as loops and
|
---|
| 424 | procedures. They can probably even work with user-defined objects in their very
|
---|
| 425 | first course.
|
---|
| 426 |
|
---|
| 427 | For a student who has never programmed before, using a statically typed language
|
---|
| 428 | seems unnatural. It presents additional complexity that the student must master
|
---|
| 429 | and slows the pace of the course. The students are trying to learn to think
|
---|
| 430 | like a computer, decompose problems, design consistent interfaces, and
|
---|
| 431 | encapsulate data. While learning to use a statically typed language is
|
---|
| 432 | important in the long term, it is not necessarily the best topic to address in
|
---|
| 433 | the students' first programming course.
|
---|
| 434 |
|
---|
| 435 | Many other aspects of Python make it a good first language. Like Java, Python
|
---|
| 436 | has a large standard library so that students can be assigned programming
|
---|
| 437 | projects very early in the course that *do* something. Assignments aren't
|
---|
| 438 | restricted to the standard four-function calculator and check balancing
|
---|
| 439 | programs. By using the standard library, students can gain the satisfaction of
|
---|
| 440 | working on realistic applications as they learn the fundamentals of programming.
|
---|
| 441 | Using the standard library also teaches students about code reuse. Third-party
|
---|
| 442 | modules such as PyGame are also helpful in extending the students' reach.
|
---|
| 443 |
|
---|
| 444 | Python's interactive interpreter enables students to test language features
|
---|
| 445 | while they're programming. They can keep a window with the interpreter running
|
---|
| 446 | while they enter their program's source in another window. If they can't
|
---|
| 447 | remember the methods for a list, they can do something like this::
|
---|
| 448 |
|
---|
| 449 | >>> L = []
|
---|
| 450 | >>> dir(L)
|
---|
| 451 | ['append', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
|
---|
| 452 | 'reverse', 'sort']
|
---|
| 453 | >>> help(L.append)
|
---|
| 454 | Help on built-in function append:
|
---|
| 455 |
|
---|
| 456 | append(...)
|
---|
| 457 | L.append(object) -- append object to end
|
---|
| 458 | >>> L.append(1)
|
---|
| 459 | >>> L
|
---|
| 460 | [1]
|
---|
| 461 |
|
---|
| 462 | With the interpreter, documentation is never far from the student as he's
|
---|
| 463 | programming.
|
---|
| 464 |
|
---|
| 465 | There are also good IDEs for Python. IDLE is a cross-platform IDE for Python
|
---|
| 466 | that is written in Python using Tkinter. PythonWin is a Windows-specific IDE.
|
---|
| 467 | Emacs users will be happy to know that there is a very good Python mode for
|
---|
| 468 | Emacs. All of these programming environments provide syntax highlighting,
|
---|
| 469 | auto-indenting, and access to the interactive interpreter while coding. Consult
|
---|
| 470 | http://www.python.org/editors/ for a full list of Python editing environments.
|
---|
| 471 |
|
---|
| 472 | If you want to discuss Python's use in education, you may be interested in
|
---|
| 473 | joining `the edu-sig mailing list
|
---|
| 474 | <http://python.org/community/sigs/current/edu-sig>`_.
|
---|
| 475 |
|
---|
| 476 |
|
---|
| 477 | Upgrading Python
|
---|
| 478 | ================
|
---|
| 479 |
|
---|
| 480 | What is this bsddb185 module my application keeps complaining about?
|
---|
| 481 | --------------------------------------------------------------------
|
---|
| 482 |
|
---|
| 483 | .. XXX remove this question?
|
---|
| 484 |
|
---|
| 485 | Starting with Python2.3, the distribution includes the `PyBSDDB package
|
---|
| 486 | <http://pybsddb.sf.net/>` as a replacement for the old bsddb module. It
|
---|
| 487 | includes functions which provide backward compatibility at the API level, but
|
---|
| 488 | requires a newer version of the underlying `Berkeley DB
|
---|
| 489 | <http://www.sleepycat.com>`_ library. Files created with the older bsddb module
|
---|
| 490 | can't be opened directly using the new module.
|
---|
| 491 |
|
---|
| 492 | Using your old version of Python and a pair of scripts which are part of Python
|
---|
| 493 | 2.3 (db2pickle.py and pickle2db.py, in the Tools/scripts directory) you can
|
---|
| 494 | convert your old database files to the new format. Using your old Python
|
---|
| 495 | version, run the db2pickle.py script to convert it to a pickle, e.g.::
|
---|
| 496 |
|
---|
| 497 | python2.2 <pathto>/db2pickley.py database.db database.pck
|
---|
| 498 |
|
---|
| 499 | Rename your database file::
|
---|
| 500 |
|
---|
| 501 | mv database.db olddatabase.db
|
---|
| 502 |
|
---|
| 503 | Now convert the pickle file to a new format database::
|
---|
| 504 |
|
---|
| 505 | python <pathto>/pickle2db.py database.db database.pck
|
---|
| 506 |
|
---|
| 507 | The precise commands you use will vary depending on the particulars of your
|
---|
| 508 | installation. For full details about operation of these two scripts check the
|
---|
| 509 | doc string at the start of each one.
|
---|