2007-08-15 22:28:22 +08:00
|
|
|
.. _tut-intro:
|
|
|
|
|
|
|
|
**********************
|
|
|
|
Whetting Your Appetite
|
|
|
|
**********************
|
|
|
|
|
|
|
|
If you do much work on computers, eventually you find that there's some task
|
|
|
|
you'd like to automate. For example, you may wish to perform a
|
|
|
|
search-and-replace over a large number of text files, or rename and rearrange a
|
|
|
|
bunch of photo files in a complicated way. Perhaps you'd like to write a small
|
|
|
|
custom database, or a specialized GUI application, or a simple game.
|
|
|
|
|
|
|
|
If you're a professional software developer, you may have to work with several
|
|
|
|
C/C++/Java libraries but find the usual write/compile/test/re-compile cycle is
|
|
|
|
too slow. Perhaps you're writing a test suite for such a library and find
|
|
|
|
writing the testing code a tedious task. Or maybe you've written a program that
|
|
|
|
could use an extension language, and you don't want to design and implement a
|
|
|
|
whole new language for your application.
|
|
|
|
|
|
|
|
Python is just the language for you.
|
|
|
|
|
|
|
|
You could write a Unix shell script or Windows batch files for some of these
|
|
|
|
tasks, but shell scripts are best at moving around files and changing text data,
|
|
|
|
not well-suited for GUI applications or games. You could write a C/C++/Java
|
|
|
|
program, but it can take a lot of development time to get even a first-draft
|
2008-09-14 01:46:05 +08:00
|
|
|
program. Python is simpler to use, available on Windows, Mac OS X, and Unix
|
2007-08-15 22:28:22 +08:00
|
|
|
operating systems, and will help you get the job done more quickly.
|
|
|
|
|
|
|
|
Python is simple to use, but it is a real programming language, offering much
|
|
|
|
more structure and support for large programs than shell scripts or batch files
|
|
|
|
can offer. On the other hand, Python also offers much more error checking than
|
|
|
|
C, and, being a *very-high-level language*, it has high-level data types built
|
|
|
|
in, such as flexible arrays and dictionaries. Because of its more general data
|
|
|
|
types Python is applicable to a much larger problem domain than Awk or even
|
|
|
|
Perl, yet many things are at least as easy in Python as in those languages.
|
|
|
|
|
|
|
|
Python allows you to split your program into modules that can be reused in other
|
|
|
|
Python programs. It comes with a large collection of standard modules that you
|
|
|
|
can use as the basis of your programs --- or as examples to start learning to
|
|
|
|
program in Python. Some of these modules provide things like file I/O, system
|
|
|
|
calls, sockets, and even interfaces to graphical user interface toolkits like
|
|
|
|
Tk.
|
|
|
|
|
|
|
|
Python is an interpreted language, which can save you considerable time during
|
|
|
|
program development because no compilation and linking is necessary. The
|
|
|
|
interpreter can be used interactively, which makes it easy to experiment with
|
|
|
|
features of the language, to write throw-away programs, or to test functions
|
|
|
|
during bottom-up program development. It is also a handy desk calculator.
|
|
|
|
|
|
|
|
Python enables programs to be written compactly and readably. Programs written
|
|
|
|
in Python are typically much shorter than equivalent C, C++, or Java programs,
|
|
|
|
for several reasons:
|
|
|
|
|
|
|
|
* the high-level data types allow you to express complex operations in a single
|
|
|
|
statement;
|
|
|
|
|
|
|
|
* statement grouping is done by indentation instead of beginning and ending
|
|
|
|
brackets;
|
|
|
|
|
|
|
|
* no variable or argument declarations are necessary.
|
|
|
|
|
|
|
|
Python is *extensible*: if you know how to program in C it is easy to add a new
|
|
|
|
built-in function or module to the interpreter, either to perform critical
|
|
|
|
operations at maximum speed, or to link Python programs to libraries that may
|
|
|
|
only be available in binary form (such as a vendor-specific graphics library).
|
|
|
|
Once you are really hooked, you can link the Python interpreter into an
|
|
|
|
application written in C and use it as an extension or command language for that
|
|
|
|
application.
|
|
|
|
|
|
|
|
By the way, the language is named after the BBC show "Monty Python's Flying
|
Merged revisions 62260-62261,62266,62271,62277-62279,62289-62290,62293-62298,62302-62306,62308,62311,62313-62315,62319-62321 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
........
r62260 | gregory.p.smith | 2008-04-10 01:11:56 +0200 (Thu, 10 Apr 2008) | 2 lines
better diagnostics
........
r62261 | gregory.p.smith | 2008-04-10 01:16:37 +0200 (Thu, 10 Apr 2008) | 3 lines
Raise SystemError when size < 0 is passed into PyString_FromStringAndSize,
PyBytes_FromStringAndSize or PyUnicode_FromStringAndSize. [issue2587]
........
r62266 | neal.norwitz | 2008-04-10 07:46:39 +0200 (Thu, 10 Apr 2008) | 5 lines
Remove the test file before writing it in case there is no write permission.
This might help fix some of the failures on Windows box(es). It doesn't hurt
either way and ensure the tests are a little more self contained (ie have
less assumptions).
........
r62271 | gregory.p.smith | 2008-04-10 21:50:36 +0200 (Thu, 10 Apr 2008) | 2 lines
get rid of assert (size >= 0) now that an explicit if (size < 0) is in the code.
........
r62277 | andrew.kuchling | 2008-04-10 23:27:10 +0200 (Thu, 10 Apr 2008) | 1 line
Remove forward-looking statement
........
r62278 | andrew.kuchling | 2008-04-10 23:28:51 +0200 (Thu, 10 Apr 2008) | 1 line
Add punctuation
........
r62279 | andrew.kuchling | 2008-04-10 23:29:01 +0200 (Thu, 10 Apr 2008) | 1 line
Use issue directive
........
r62289 | thomas.heller | 2008-04-11 15:05:38 +0200 (Fri, 11 Apr 2008) | 3 lines
Move backwards compatibility macro to the correct place;
PyIndex_Check() was introduced in Python 2.5.
........
r62290 | thomas.heller | 2008-04-11 16:20:26 +0200 (Fri, 11 Apr 2008) | 2 lines
Performance improvements.
........
r62293 | christian.heimes | 2008-04-12 15:03:03 +0200 (Sat, 12 Apr 2008) | 2 lines
Applied patch #2617 from Frank Wierzbicki wit some extras from me
-J and -X are now reserved for Jython and non-standard arguments (e.g. IronPython). I've added some extra comments to make sure the reservation don't get missed in the future.
........
r62294 | georg.brandl | 2008-04-12 20:11:18 +0200 (Sat, 12 Apr 2008) | 2 lines
Use absolute path in sys.path.
........
r62295 | georg.brandl | 2008-04-12 20:36:09 +0200 (Sat, 12 Apr 2008) | 2 lines
#2615: small consistency update by Jeroen Ruigrok van der Werven.
........
r62296 | georg.brandl | 2008-04-12 21:00:20 +0200 (Sat, 12 Apr 2008) | 2 lines
Add Jeroen.
........
r62297 | georg.brandl | 2008-04-12 21:05:37 +0200 (Sat, 12 Apr 2008) | 2 lines
Don't offend snake lovers.
........
r62298 | gregory.p.smith | 2008-04-12 22:37:48 +0200 (Sat, 12 Apr 2008) | 2 lines
fix compiler warnings
........
r62302 | gregory.p.smith | 2008-04-13 00:24:04 +0200 (Sun, 13 Apr 2008) | 3 lines
socket.error inherits from IOError, it no longer needs listing in
the all_errors tuple.
........
r62303 | brett.cannon | 2008-04-13 01:44:07 +0200 (Sun, 13 Apr 2008) | 8 lines
Re-implement the 'warnings' module in C. This allows for usage of the
'warnings' code in places where it was previously not possible (e.g., the
parser). It could also potentially lead to a speed-up in interpreter start-up
if the C version of the code (_warnings) is imported over the use of the
Python version in key places.
Closes issue #1631171.
........
r62304 | gregory.p.smith | 2008-04-13 02:03:25 +0200 (Sun, 13 Apr 2008) | 3 lines
Adds a profile-opt target for easy compilation of a python binary using
gcc's profile guided optimization.
........
r62305 | brett.cannon | 2008-04-13 02:18:44 +0200 (Sun, 13 Apr 2008) | 3 lines
Fix a bug in PySys_HasWarnOption() where it was not properly checking the
length of the list storing the warning options.
........
r62306 | brett.cannon | 2008-04-13 02:25:15 +0200 (Sun, 13 Apr 2008) | 2 lines
Fix an accidental bug of an non-existent init function.
........
r62308 | andrew.kuchling | 2008-04-13 03:05:59 +0200 (Sun, 13 Apr 2008) | 1 line
Mention -J, -X
........
r62311 | benjamin.peterson | 2008-04-13 04:20:05 +0200 (Sun, 13 Apr 2008) | 2 lines
Give the "Interactive Interpreter Changes" section in 2.6 whatsnew a unique link name
........
r62313 | brett.cannon | 2008-04-13 04:42:36 +0200 (Sun, 13 Apr 2008) | 3 lines
Fix test_warnings by making the state of things more consistent for each test
when it is run.
........
r62314 | skip.montanaro | 2008-04-13 05:17:30 +0200 (Sun, 13 Apr 2008) | 2 lines
spelling
........
r62315 | georg.brandl | 2008-04-13 09:07:44 +0200 (Sun, 13 Apr 2008) | 2 lines
Fix markup.
........
r62319 | christian.heimes | 2008-04-13 11:30:17 +0200 (Sun, 13 Apr 2008) | 1 line
Fix compiler warning Include/warnings.h:19:28: warning: no newline at end of file
........
r62320 | christian.heimes | 2008-04-13 11:33:24 +0200 (Sun, 13 Apr 2008) | 1 line
Use PyString_InternFromString instead of PyString_FromString for static vars
........
r62321 | christian.heimes | 2008-04-13 11:37:05 +0200 (Sun, 13 Apr 2008) | 1 line
Added new files to the pcbuild files
........
2008-04-13 21:53:33 +08:00
|
|
|
Circus" and has nothing to do with reptiles. Making references to Monty
|
2007-08-15 22:28:22 +08:00
|
|
|
Python skits in documentation is not only allowed, it is encouraged!
|
|
|
|
|
|
|
|
Now that you are all excited about Python, you'll want to examine it in some
|
|
|
|
more detail. Since the best way to learn a language is to use it, the tutorial
|
|
|
|
invites you to play with the Python interpreter as you read.
|
|
|
|
|
|
|
|
In the next chapter, the mechanics of using the interpreter are explained. This
|
|
|
|
is rather mundane information, but essential for trying out the examples shown
|
|
|
|
later.
|
|
|
|
|
|
|
|
The rest of the tutorial introduces various features of the Python language and
|
|
|
|
system through examples, beginning with simple expressions, statements and data
|
|
|
|
types, through functions and modules, and finally touching upon advanced
|
|
|
|
concepts like exceptions and user-defined classes.
|
|
|
|
|
|
|
|
|