author | Santosh G. Vattam <vattam.santosh@gmail.com> |
Fri, 21 Aug 2009 23:49:56 +0530 | |
changeset 32 | 628d035d559a |
parent 31 | 01ea4544ad81 |
child 33 | b850a2b9fc21 |
permissions | -rw-r--r-- |
1
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
1 |
===================== |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
2 |
Basic Python Workshop |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
3 |
===================== |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
4 |
|
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
5 |
This document is intended to be handed out at the end of the workshop. It has |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
6 |
been designed for Engineering students who are Python beginners and have basic |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
7 |
programming skills. The focus is on basic numerics and plotting using Python. |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
8 |
|
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
9 |
The system requirements: |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
10 |
* Python - version 2.5.x or newer. |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
11 |
* IPython |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
12 |
* Text editor - scite, vim, emacs or whatever you are comfortable with. |
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
13 |
|
31
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
14 |
1. Introduction |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
15 |
=============== |
1
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
16 |
|
31
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
17 |
The Python programming language was created by a dutch named Guido van Rossum. |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
18 |
The idea of Python was conceived in December 1989. The name Python has nothing |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
19 |
to do with the reptilian, but its been named after the 70s comedy series |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
20 |
"Monty Python's Flying Circus", since it happens to be Guido's favourite |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
21 |
TV series. |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
22 |
|
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
23 |
Current stable version of Python is 2.6.x, although Python 3.0 is also the stable |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
24 |
version, it is not backwards compatible with the previous versions and is hence |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
25 |
not entirely popular at the moment. This material will focus on the 2.6.x series. |
1
dccb80025455
Added Basic Python Handout rst document.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
diff
changeset
|
26 |
|
31
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
27 |
Python is licensed under the Python Software Foundation License (PSF License) |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
28 |
which is GPL compatible Free Software license (excepting license version 1.6 and 2.0) |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
29 |
It is a no strings attached license, which means the source code is free to modify |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
30 |
and redistribute. |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
31 |
|
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
32 |
The Python docs define Python as "Python is an interpreted, object-oriented, |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
33 |
high-level programming language with dynamic semantics." A more detailed summary |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
34 |
can be found at http://www.python.org/doc/essays/blurb.html. Python is a language that |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
35 |
has been designed to help the programmer concentrate on solving the problem at hand |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
36 |
and not worry about the programming language idiosyncrasies. |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
37 |
|
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
38 |
Python is a highly cross platform compatible language on account of it being an |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
39 |
interpreted language. It is highly scalable and hence has been adapted to run on |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
40 |
the Nokia 60 series phones. Python has been designed to be readable and easy to use |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
41 |
|
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
42 |
**Resources available for reference** |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
43 |
|
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
44 |
* Web: http://www.python.org |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
45 |
* Doc: http://www.python.org/doc |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
46 |
* Free Tutorials: |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
47 |
* Official Python Tutorial: http://docs.python.org/tut/tut.html |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
48 |
* Byte of Python: http://www.byteofpython.info/ |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
49 |
* Dive into Python: http://diveintopython.org/ |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
50 |
|
32
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
51 |
**Advantages of Python - Why Python??** |
31
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
52 |
|
32
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
53 |
* Python has been designed for readability and ease of use. Its been designed in |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
54 |
such a fashion that it imposes readability on the programmer. Python does away |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
55 |
with the braces and the semicolons and instead implements code blocks based on |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
56 |
indentation, thus enhancing readability. |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
57 |
|
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
58 |
* Python is a high level, interpreted, modular and object oriented language. |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
59 |
Python performs memory management on its own, thus the programmer need not bother |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
60 |
about allocating and deallocating memory to variables. Python provides extensibility |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
61 |
by providing modules which can be easily imported similar to headers in C and |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
62 |
packages in Java. Python is object oriented and hence provides all the object oriented |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
63 |
characterstics such as inheritence, encapsulation and polymorphism. |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
64 |
|
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
65 |
* Python offers a highly powerful interactive programming interface in the form |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
66 |
of the 'Interactive Interpreter' which will be discussed in more detail in the |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
67 |
following sections. |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
68 |
|
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
69 |
* Python provides a rich standard library and an extensive set of modules. The |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
70 |
power of Python modules can be seen in this slightly exaggerated cartoon |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
71 |
http://xkcd.com/353/ |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
72 |
|
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
73 |
* Python interfaces well with most other programming languages such as C, C++ |
628d035d559a
Added Advantages of Python section
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
31
diff
changeset
|
74 |
and FORTRAN. |
31
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
75 |
|
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
76 |
1.1 The Python Interpreter |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
77 |
-------------------------- |
01ea4544ad81
Added content to introduction.
Santosh G. Vattam <vattam.santosh@gmail.com>
parents:
3
diff
changeset
|
78 |