Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +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 | 9af9498 | 2008-09-13 17:41:16 +0000 | [diff] [blame] | 26 | program. Python is simpler to use, available on Windows, Mac OS X, and Unix |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +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 |
Georg Brandl | 751a036 | 2008-04-12 19:05:37 +0000 | [diff] [blame] | 71 | Circus" and has nothing to do with reptiles. Making references to Monty |
Georg Brandl | 8ec7f65 | 2007-08-15 14:28:01 +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 | 8ec7f65 | 2007-08-15 14:28:01 +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 | |