| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 1 | .. _tut-intro: | 
 | 2 |  | 
 | 3 | ********************** | 
 | 4 | Whetting Your Appetite | 
 | 5 | ********************** | 
 | 6 |  | 
 | 7 | If you do much work on computers, eventually you find that there's some task | 
 | 8 | you'd like to automate.  For example, you may wish to perform a | 
 | 9 | search-and-replace over a large number of text files, or rename and rearrange a | 
 | 10 | bunch of photo files in a complicated way. Perhaps you'd like to write a small | 
 | 11 | custom database, or a specialized GUI application, or a simple game. | 
 | 12 |  | 
 | 13 | If you're a professional software developer, you may have to work with several | 
 | 14 | C/C++/Java libraries but find the usual write/compile/test/re-compile cycle is | 
 | 15 | too slow.  Perhaps you're writing a test suite for such a library and find | 
 | 16 | writing the testing code a tedious task.  Or maybe you've written a program that | 
 | 17 | could use an extension language, and you don't want to design and implement a | 
 | 18 | whole new language for your application. | 
 | 19 |  | 
 | 20 | Python is just the language for you. | 
 | 21 |  | 
 | 22 | You could write a Unix shell script or Windows batch files for some of these | 
 | 23 | tasks, but shell scripts are best at moving around files and changing text data, | 
 | 24 | not well-suited for GUI applications or games. You could write a C/C++/Java | 
 | 25 | program, but it can take a lot of development time to get even a first-draft | 
| Georg Brandl | c575c90 | 2008-09-13 17:46:05 +0000 | [diff] [blame] | 26 | program.  Python is simpler to use, available on Windows, Mac OS X, and Unix | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 27 | operating systems, and will help you get the job done more quickly. | 
 | 28 |  | 
 | 29 | Python is simple to use, but it is a real programming language, offering much | 
 | 30 | more structure and support for large programs than shell scripts or batch files | 
 | 31 | can offer.  On the other hand, Python also offers much more error checking than | 
 | 32 | C, and, being a *very-high-level language*, it has high-level data types built | 
 | 33 | in, such as flexible arrays and dictionaries.  Because of its more general data | 
 | 34 | types Python is applicable to a much larger problem domain than Awk or even | 
 | 35 | Perl, yet many things are at least as easy in Python as in those languages. | 
 | 36 |  | 
 | 37 | Python allows you to split your program into modules that can be reused in other | 
 | 38 | Python programs.  It comes with a large collection of standard modules that you | 
 | 39 | can use as the basis of your programs --- or as examples to start learning to | 
 | 40 | program in Python.  Some of these modules provide things like file I/O, system | 
 | 41 | calls, sockets, and even interfaces to graphical user interface toolkits like | 
 | 42 | Tk. | 
 | 43 |  | 
 | 44 | Python is an interpreted language, which can save you considerable time during | 
 | 45 | program development because no compilation and linking is necessary.  The | 
 | 46 | interpreter can be used interactively, which makes it easy to experiment with | 
 | 47 | features of the language, to write throw-away programs, or to test functions | 
 | 48 | during bottom-up program development. It is also a handy desk calculator. | 
 | 49 |  | 
 | 50 | Python enables programs to be written compactly and readably.  Programs written | 
 | 51 | in Python are typically much shorter than equivalent C,  C++, or Java programs, | 
 | 52 | for several reasons: | 
 | 53 |  | 
 | 54 | * the high-level data types allow you to express complex operations in a single | 
 | 55 |   statement; | 
 | 56 |  | 
 | 57 | * statement grouping is done by indentation instead of beginning and ending | 
 | 58 |   brackets; | 
 | 59 |  | 
 | 60 | * no variable or argument declarations are necessary. | 
 | 61 |  | 
 | 62 | Python is *extensible*: if you know how to program in C it is easy to add a new | 
 | 63 | built-in function or module to the interpreter, either to perform critical | 
 | 64 | operations at maximum speed, or to link Python programs to libraries that may | 
 | 65 | only be available in binary form (such as a vendor-specific graphics library). | 
 | 66 | Once you are really hooked, you can link the Python interpreter into an | 
 | 67 | application written in C and use it as an extension or command language for that | 
 | 68 | application. | 
 | 69 |  | 
 | 70 | By the way, the language is named after the BBC show "Monty Python's Flying | 
| Christian Heimes | 33fe809 | 2008-04-13 13:53:33 +0000 | [diff] [blame] | 71 | Circus" and has nothing to do with reptiles.  Making references to Monty | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 72 | Python skits in documentation is not only allowed, it is encouraged! | 
 | 73 |  | 
 | 74 | Now that you are all excited about Python, you'll want to examine it in some | 
 | 75 | more detail.  Since the best way to learn a language is to use it, the tutorial | 
 | 76 | invites you to play with the Python interpreter as you read. | 
 | 77 |  | 
| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame] | 78 | In the next chapter, the mechanics of using the interpreter are explained.  This | 
 | 79 | is rather mundane information, but essential for trying out the examples shown | 
 | 80 | later. | 
 | 81 |  | 
 | 82 | The rest of the tutorial introduces various features of the Python language and | 
 | 83 | system through examples, beginning with simple expressions, statements and data | 
 | 84 | types, through functions and modules, and finally touching upon advanced | 
 | 85 | concepts like exceptions and user-defined classes. | 
 | 86 |  | 
 | 87 |  |