Branch merged.
authorSantosh G. Vattam <vattam.santosh@gmail.com>
Mon, 24 Aug 2009 23:33:26 +0530
changeset 35 8f43cab360aa
parent 30 3ca8ab883c13 (current diff)
parent 34 7a243a6d8625 (diff)
child 36 4c4c8a9795b2
child 39 932a7a863120
Branch merged.
--- a/basic_python/intro.rst	Mon Aug 24 05:33:40 2009 +0530
+++ b/basic_python/intro.rst	Mon Aug 24 23:33:26 2009 +0530
@@ -11,24 +11,252 @@
   * IPython 
   * Text editor - scite, vim, emacs or whatever you are comfortable with.
 
+1. Introduction
+===============
 
+The Python programming language was created by a dutch named Guido van Rossum.
+The idea of Python was conceived in December 1989. The name Python has nothing
+to do with the reptilian, but its been named after the 70s comedy series 
+"Monty Python's Flying Circus", since it happens to be Guido's favourite 
+TV series. 
+
+Current stable version of Python is 2.6.x, although Python 3.0 is also the stable
+version, it is not backwards compatible with the previous versions and is hence
+not entirely popular at the moment. This material will focus on the 2.6.x series.
+  
+Python is licensed under the Python Software Foundation License (PSF License) 
+which is GPL compatible Free Software license (excepting license version 1.6 and 2.0)
+It is a no strings attached license, which means the source code is free to modify
+and redistribute.
+
+The Python docs define Python as "Python is an interpreted, object-oriented, 
+high-level programming language with dynamic semantics." A more detailed summary
+can be found at http://www.python.org/doc/essays/blurb.html. Python is a language that
+has been designed to help the programmer concentrate on solving the problem at hand
+and not worry about the programming language idiosyncrasies.
+
+Python is a highly cross platform compatible language on account of it being an 
+interpreted language. It is highly scalable and hence has been adapted to run on 
+the Nokia 60 series phones. Python has been designed to be readable and easy to use
+
+**Resources available for reference**
+
+* Web: http://www.python.org
+* Doc: http://www.python.org/doc
+* Free Tutorials:
+    * Official Python Tutorial: http://docs.python.org/tut/tut.html
+    * Byte of Python: http://www.byteofpython.info/
+    * Dive into Python: http://diveintopython.org/
+
+**Advantages of Python - Why Python??**
+
+* Python has been designed for readability and ease of use. Its been designed in 
+  such a fashion that it imposes readability on the programmer. Python does away
+  with the braces and the semicolons and instead implements code blocks based on 
+  indentation, thus enhancing readability. 
+
+* Python is a high level, interpreted, modular and object oriented language.
+  Python performs memory management on its own, thus the programmer need not bother
+  about allocating and deallocating memory to variables. Python provides extensibility
+  by providing modules which can be easily imported similar to headers in C and 
+  packages in Java. Python is object oriented and hence provides all the object oriented
+  characteristics such as inheritance, encapsulation and polymorphism.
+
+* Python offers a highly powerful interactive programming interface in the form
+  of the 'Interactive Interpreter' which will be discussed in more detail in the 
+  following sections.
+
+* Python provides a rich standard library and an extensive set of modules. The 
+  power of Python modules can be seen in this slightly exaggerated cartoon
+  http://xkcd.com/353/
+
+* Python interfaces well with most other programming languages such as C, C++ 
+  and FORTRAN.
+
+Although, Python has one setback. Python is not fast as some of the compiled 
+languages like C or C++. Yet, the amount of flexibility and power more than make
+up for this setback.
 
 
-Introduction
-============
+1.1 The Python Interpreter
+--------------------------
+
+1.1.1 The Interactive Interpreter
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Typing *python* at the shell prompt on any standard Unix/Gnu-Linux system and
+hitting the enter key fires up the Python 'Interactive Interpreter'. The Python
+interpreter is one of the most integral features of Python. The prompt obtained
+when the interactive interpreter is similar to what is shown below. The exact
+appearance might differ based on the version of Python being used. The ``>>>``
+thing shown is the python prompt. When something is typed at the prompt and the
+enter key is hit, the python interpreter interprets the command entered and
+performs the appropriate action.
+
+::
+
+  Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49) 
+  [GCC 4.3.2] on linux2
+  Type "help", "copyright", "credits" or "license" for more information.
+  >>> 
+
+Lets try with an example, type ``print 'Hello, World!'`` at the prompt and hit
+the enter key. 
+
+::
+
+  >>> print 'Hello, World!'
+  Hello, World!
+
+This example was quite straight forward, and thus we have written our first
+line of Python code. Now let us try typing something arbitrary at the prompt.
+For example: 
 
-  The Python programming language was created by a dutch named Guido van Rossum.
-  The idea of Python was conceived in December 1989. The name Python has nothing
-  to do with the reptilian, but its been named after the 70s comedy series 
-  "Monty Python's Flying Circus", since it happens to be Guido's favourite 
-  TV series. 
+::
+  
+  >>> arbit word
+    File "<stdin>", line 1
+      arbit word
+              ^
+  SyntaxError: invalid syntax
+  >>>
+    
+The interpreter gave an error message saying that 'arbit word' was invalid
+syntax which is valid. The interpreter is an amazing tool when learning to
+program in Python. The interpreter provides a help function that provides the
+necessary documentation regarding all Python syntax, constructs, modules and
+objects. Typing *help()* at the prompt gives the following output:
+
+::
+  
+  >>> help()
+  
+  Welcome to Python 2.5!  This is the online help utility.
+  
+  If this is your first time using Python, you should definitely check out
+  the tutorial on the Internet at http://www.python.org/doc/tut/.
+  
+  Enter the name of any module, keyword, or topic to get help on writing
+  Python programs and using Python modules.  To quit this help utility and
+  return to the interpreter, just type "quit".
+  
+  To get a list of available modules, keywords, or topics, type "modules",
+  "keywords", or "topics".  Each module also comes with a one-line summary
+  of what it does; to list the modules whose summaries contain a given word
+  such as "spam", type "modules spam".
+  
+  help> 
+  
+
+As mentioned in the output, entering the name of any module, keyword or topic
+will provide the documentation and help regarding the same through the online
+help utility. Pressing *Ctrl+d* exits the help prompt and returns to the
+python prompt. 
+
+Let us now try a few examples at the python interpreter. 
+
+Eg 1:
+::
+  
+  >>> print 'Hello, python!'
+  Hello, python!
+  >>>
+  
+Eg 2:
+::
+  
+  >>> print 4321*567890
+  2453852690
+  >>> 
   
-  Current stable version of Python is 2.6.x, although Python 3.0 is also the stable
-  version, it is not backwards compatible with the previous versions and is hence
-  not entirely popular at the moment. This material contains material pertaining 
-  to the 2.6.x series.
+Eg 3:
+::
+  
+  >>> 4321*567890
+  2453852690L
+  >>>
+
+::
+  
+  Note: Notice the 'L' at the end of the output. The 'L' signifies that the
+  output of the operation is of type *long*. It was absent in the previous
+  example because we used the print statement. This is because *print* formats
+  the output before displaying.
+  
+Eg 4:
+::
+  
+  >>> big = 12345678901234567890 ** 3
+  >>> print big
+  1881676372353657772490265749424677022198701224860897069000
+  >>> 
+
+::
+  
+  This example is to show that unlike in C or C++ there is no limit on the
+  value of an integer.
+
+1.1.2 *ipython* - An enhanced interactive Python interpreter
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The power and the importance of the interactive interpreter was the highlight
+of the previous section. This section provides insight into the enhanced
+interpreter with more advanced set of features called **ipython**. Entering
+*ipython* at the shell prompt fires up the interactive interpreter. 
+
+::
+  
+  $ ipython
+  Python 2.5.2 (r252:60911, Oct  5 2008, 19:24:49) 
+  Type "copyright", "credits" or "license" for more information.
   
-The Python Interpreter
-======================
+  IPython 0.8.4 -- An enhanced Interactive Python.
+  ?         -> Introduction and overview of IPython's features.
+  %quickref -> Quick reference.
+  help      -> Python's own help system.
+  object?   -> Details about 'object'. ?object also works, ?? prints more.
+  
+  In [1]: 
+  
+This is the output obtained upon firing ipython. The exact appearance may
+change based on the Python version installed. The following are some of the
+various features provided by **ipython**:
+  
+  * Suggestions - ipython provides suggestions of the possible methods and
+    operations available for the given python object.
+
+Eg:
+  
+::
+  
+  In [4]: a = 6
   
-  
\ No newline at end of file
+  In [5]: a.
+  a.__abs__           a.__divmod__        a.__index__         a.__neg__       
+    a.__rand__          a.__rmod__          a.__rxor__
+  a.__add__           a.__doc__           a.__init__          a.__new__       
+    a.__rdiv__          a.__rmul__          a.__setattr__
+  a.__and__           a.__float__         a.__int__           a.__nonzero__   
+    a.__rdivmod__       a.__ror__           a.__str__
+  a.__class__         a.__floordiv__      a.__invert__        a.__oct__       
+    a.__reduce__        a.__rpow__          a.__sub__
+  a.__cmp__           a.__getattribute__  a.__long__          a.__or__        
+    a.__reduce_ex__     a.__rrshift__       a.__truediv__
+  a.__coerce__        a.__getnewargs__    a.__lshift__        a.__pos__      
+    a.__repr__          a.__rshift__        a.__xor__
+  a.__delattr__       a.__hash__          a.__mod__           a.__pow__      
+    a.__rfloordiv__     a.__rsub__          
+  a.__div__           a.__hex__           a.__mul__           a.__radd__     
+    a.__rlshift__       a.__rtruediv__      
+
+In this example, we initialized 'a' (a variable - a concept that will be
+discussed in the subsequent sections.) to 6. In the next line when the *tab* key
+is pressed after typing '*a.*' ipython displays the set of all possible methods
+that are applicable on the object 'a' (an integer in this context). Ipython
+provides many such datatype specific features which will be presented in the
+further sections as and when the datatypes are introduced.
+
+1.2 Editing and running a python file
+-------------------------------------
+
+The 
\ No newline at end of file