# HG changeset patch # User Santosh G. Vattam # Date 1251137006 -19800 # Node ID 8f43cab360aa815c7cf658e19d2d29836c886fe2 # Parent 3ca8ab883c13caebbb29de07c05bc1dc113a1daf# Parent 7a243a6d8625fd74aaeaf697e7a81e9f5e43655c Branch merged. diff -r 3ca8ab883c13 -r 8f43cab360aa basic_python/intro.rst --- 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 "", 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