Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Python Programming Language: By: Priyanka Pradhan

Download as pdf or txt
Download as pdf or txt
You are on page 1of 93

Python Programming

Language
By: Priyanka Pradhan

Priyanka Pradhan 1
Books include:

• Learning Python by Mark Lutz


• Python Essential Reference by David
Beazley
• Python Cookbook, ed. by Martelli,
Ravenscroft and Ascher
• (online at
http://code.activestate.com/recipes/langs/pyt
hon/)
• http://wiki.python.org/moin/PythonBooks
Priyanka Pradhan 2
4 Major Versions of Python

• “Python” or “CPython” is written in C/C++


- Version 2.7 came out in mid-2010
- Version 3.1.2 came out in early 2010

• “Jython” is written in Java for the JVM


• “IronPython” is written in C# for the .Net
environment
Priyanka Pradhan 3
Contd…

• Created in 1989 by Guido Van Rossum


• Python 1.0 released in 1994
• Python 2.0 released in 2000
• Python 3.0 released in 2008
• Python 2.7 is the recommended version
• 3.0 adoption will take a few years

Priyanka Pradhan 4
Development Environments
IDE
1. PyDev with Eclipse
2. Komodo
3. Emacs
4. Vim
5. TextMate
6. Gedit
7. Idle
8. PIDA (Linux)(VIM Based)
9. NotePad++ (Windows)
10.Pycharm
Priyanka Pradhan 5
Web Frameworks

• Django
• Flask
• Pylons
• TurboGears
• Zope
• Grok

Priyanka Pradhan 6
Introduction

• Multi-purpose (Web, GUI, Scripting,


etc.)
• Object Oriented
• Interpreted
• Strongly typed and Dynamically typed
• Focus on readability and productivity

Priyanka Pradhan 7
Python features

• no compiling or linking
• rapid development cycle
• no type declarations
• simpler, shorter, more flexible
• automatic memory management
• garbage collection
• high-level data types and operations
Priyanka Pradhan 8
Contd..

• fast development
• object-oriented programming
• code structuring and reuse, C++
• embedding and extending in C
• mixed language systems
• classes, modules, exceptions,multithreading
• "programming-in-the-large" support
Priyanka Pradhan 9
Uses of Python
• shell tools
– system admin tools, command line programs
• extension-language work
• rapid prototyping and development
• language-based modules
– instead of special-purpose parsers
• graphical user interfaces
• database access
• distributed programming
• Internet scripting Priyanka Pradhan 10
Who Uses Python

• Google
• PBS
• NASA
• Library of Congress
• the ONION
• ...the list goes on...

Priyanka Pradhan 11
Python structure
• modules: Python source files or C extensions
– import, top-level via from, reload
• statements
– control flow
– create objects
– indentation matters – instead of {}
• objects
– everything is an object
– automatically reclaimed when no longer needed
Priyanka Pradhan 12
Indentation

• Most languages don’t care about


indentation
• Most humans do
• We tend to group similar things together

Priyanka Pradhan 13
Hello World

•Open a terminal window and type “python”


•If on Windows open a Python IDE like IDLE
•At the prompt type ‘hello world!’

>>> 'hello world!'


'hello world!'

Priyanka Pradhan 14
Python Overview

• Programs are composed of modules


• Modules contain statements
• Statements contain expressions
• Expressions create and process objects

Priyanka Pradhan 15
The Python Interpreter

•Python is an interpreted >>> 3 + 7


language 10
•The interpreter provides an >>> 3 < 15
interactive environment to True
play with the language >>> 'print me'
'print me'
•Results of expressions are >>> print 'print me'
printed on the screen print me
>>>

Priyanka Pradhan 16
The print Statement

•Elements separated by
commas print with a space
>>> print 'hello'
between them
hello
•A comma at the end of the
>>> print 'hello', 'there'
statement (print ‘hello’,) will
hello there
not print a newline character

Priyanka Pradhan 17
Documentation

The ‘#’ starts a line comment

>>> 'this will print'


'this will print'
>>> #'this will not'
>>>

Priyanka Pradhan 18
Variables
• Are not declared, just assigned
• The variable is created the first time you assign it
a value
• Are references to objects
• Type information is with the object, not the
reference
• Everything in Python is an object

Priyanka Pradhan 19
Everything is an object

• Everything means
>>> x = 7
everything, including
>>> x
functions and classes 7
(more on this later!) >>> x = 'hello'
• Data type is a property >>> x
of the object and not of 'hello'
>>>
the variable

Priyanka Pradhan 20
Basic operations
• Assignment:
– size = 40
–a = b = c = 3
• Numbers
– integer, float
– complex numbers: 1j+3, abs(z)
• Strings
– 'hello world', 'it\'s hot'
– "bye world"
Priyanka Pradhan 21
String operations

• concatenate with + or neighbours


– word = 'Help' + x
– word = 'Help' 'a'
• subscripting of strings
– 'Hello'[2]  'l'
– slice: 'Hello'[1:2]  'el'
– word[-1]  last character
– len(word)  5
– immutable: cannot assign to subscript
Priyanka Pradhan 22
Numbers: Integers
• Integer – the equivalent of
a C long >>> 132224
• Long Integer – an 132224
unbounded integer value. >>> 132323 ** 2
17509376329L
>>>

Priyanka Pradhan 23
Numbers: Floating Point
• int(x) converts x to an >>> 1.23232
integer 1.2323200000000001
>>> print 1.23232
• float(x) converts x to a 1.23232
floating point >>> 1.3E7
• The interpreter shows 13000000.0
>>> int(2.0)
a lot of digits
2
>>> float(2)
2.0

Priyanka Pradhan 24
Numbers: Complex
• Built into Python
• Same operations are >>> x = 3 + 2j
supported as integer and >>> y = -1j
>>> x + y
float
(3+1j)
>>> x * y
(2-3j)

Priyanka Pradhan 25
Numbers are immutable
x 4.5
>>> x = 4.5
>>> y = x y
>>> y += 3
x 4.5
>>> x
4.5 y 7.5
>>> y
7.5

Priyanka Pradhan 26
String Literals

• Strings are immutable


• There is no char type like >>> x = 'hello'
>>> x = x + ' there'
in C++ or Java
>>> x
• + is overloaded to do 'hello there'
concatenation

Priyanka Pradhan 27
String Literals: Many Kinds
• Can use single or double quotes, and three double
quotes for a multi-line string
>>> 'I am a string'
'I am a string'
>>> "So am I!"
'So am I!'
>>> s = """And me too!
though I am much longer
than the others :)"""
'And me too!\nthough I am much longer\nthan the others :)‘
>>> print s
And me too!
though I am much longer
than the others :)‘ Priyanka Pradhan 28
Substrings and Methods
• len(String) – returns the
>>> s = '012345'
number of characters in the
>>> s[3]
String
'3'
>>> s[1:4]
• str(Object) – returns a
'123'
String representation of the
>>> s[2:]
Object
'2345'
>>> s[:4] >>> len(x)
'0123' 6
>>> s[-2] >>> str(10.3)
'4' '10.3'

Priyanka Pradhan 29
String Formatting
• Similar to C’s printf
• <formatted string> % <elements to insert>
• Can usually just use %s for everything, it will
convert the object to its String representation.
>>> "One, %d, three" % 2
'One, 2, three'
>>> "%d, two, %s" % (1,3)
'1, two, 3'
>>> "%s two %s" % (1, 'three')
'1 two three'
>>>
Priyanka Pradhan 30
Do nothing

• pass does nothing


• syntactic filler
while 1:
pass

Priyanka Pradhan 31
Operators

• Arithmetic

Priyanka Pradhan 32
String Manipulation

Priyanka Pradhan 33
Logical Comparison

Priyanka Pradhan 34
Identity Comparison

Priyanka Pradhan 35
Arithmetic Comparison

Priyanka Pradhan 36
Class Declaration

Priyanka Pradhan 37
Class Attributes

• Attributes assigned at class declaration


should always be immutable

Priyanka Pradhan 38
Class Methods

Priyanka Pradhan 39
Class Instantiation & Attribute
Access

Priyanka Pradhan 40
Class Inheritance

Priyanka Pradhan 41
Imports

Priyanka Pradhan 42
Error Handling

Priyanka Pradhan 43
Lists
• Ordered collection of data
• Data can be of different
>>> x = [1,'hello', (3 + 2j)]
types >>> x
• Lists are mutable [1, 'hello', (3+2j)]
>>> x[2]
• Issues with shared
(3+2j)
references and mutability >>> x[0:2]
• Same subset operations as [1, 'hello']
Strings

Priyanka Pradhan 44
List
• lists can be heterogeneous
– a = ['spam', 'eggs', 100, 1234, 2*2]
• Lists can be indexed and sliced:
– a[0]  spam
– a[:2]  ['spam', 'eggs']
• Lists can be manipulated
– a[2] = a[2] + 23
– a[0:2] = [1,12]
– a[0:0] = []
– len(a)  5 Priyanka Pradhan 45
List methods
• append(x)
• extend(L)
– append all items in list (like Tcl lappend)
• insert(i,x)
• remove(x)
• pop([i]), pop()
– create stack (FIFO), or queue (LIFO)  pop(0)
• index(x)
– return the index for value x
Priyanka Pradhan 46
Contd…
• count(x)
– how many times x appears in list
• sort()
– sort items in place
• reverse()
– reverse list

Priyanka Pradhan 47
Lists: Modifying Content
• x[i] = a reassigns the >>> x = [1,2,3]
>>> y = x
ith element to the
>>> x[1] = 15
value a >>> x
• Since x and y point to [1, 15, 3]
the same list object, >>> y
[1, 15, 3]
both are changed
>>> x.append(12)
• The method append >>> y
also modifies the list [1, 15, 3, 12]

Priyanka Pradhan 48
Lists: Modifying Contents
>>> x = [1,2,3]
• The method >>> y = x
append modifies >>> z = x.append(12)
the list and returns >>> z == None
None True
• List addition (+) >>> y
returns a new list [1, 2, 3, 12]
>>> x = x + [9,10]
>>> x
[1, 2, 3, 12, 9, 10]
>>> y
[1, 2, 3, 12]
Priyanka Pradhan>>> 49
Strings share many features with
lists
>>> smiles = "C(=N)(N)N.C(=O)(O)O"
>>> smiles[0]
'C'
>>> smiles[1]
'('
>>> smiles[-1]
'O'
>>> smiles[1:5]
'(=N)'
>>> smiles[10:-4]
'C(=O)' Priyanka Pradhan 50
String Methods: find, split
smiles = "C(=N)(N)N.C(=O)(O)O"
>>> smiles.find("(O)")
15
>>> smiles.find(".")
9
>>> smiles.find(".", 10)
-1
>>> smiles.split(".")
['C(=N)(N)N', 'C(=O)(O)O']
>>>
Priyanka Pradhan 51
String operators: in, not in

if "Br" in “Brother”:
print "contains brother“

email_address = “clin”
if "@" not in email_address:
email_address += "@brandeis.edu“

Priyanka Pradhan 52
String Method: “strip”, “rstrip”, “lstrip” are
ways to
remove whitespace or selected characters
>>> line = " # This is a comment line \n"
>>> line.strip()
'# This is a comment line'
>>> line.rstrip()
' # This is a comment line'
>>> line.rstrip("\n")
' # This is a comment line '
>>>
Priyanka Pradhan 53
More String methods
email.startswith(“c") endswith(“u”)
True/False

>>> "%s@brandeis.edu" % "clin"


'clin@brandeis.edu'

>>> names = [“Ben", “Chen", “Yaqin"]


>>> ", ".join(names)
‘Ben, Chen, Yaqin‘

>>> “chen".upper()
‘CHEN'
Priyanka Pradhan 54
“\” is for special characters
\n -> newline
\t -> tab
\\ -> backslash
...
But Windows uses backslash for directories!
filename = "M:\nickel_project\reactive.smi" # DANGER!
filename = "M:\\nickel_project\\reactive.smi" # Better!
filename = "M:/nickel_project/reactive.smi" # Usually works

Priyanka Pradhan 55
Tuples
• Tuples are immutable
versions of lists
• One strange point is the >>> x = (1,2,3)
format to make a tuple with >>> x[1:]
(2, 3)
one element:
>>> y = (2,)
‘,’ is needed to differentiate >>> y
from the mathematical (2,)
expression (2) >>>

Priyanka Pradhan 56
Tuples and sequences

• lists, strings, tuples: examples of sequence


type
• tuple = values separated by commas
>>> t = 123, 543, 'bar'
>>> t[0]
123
>>> t
(123, 543, 'bar')
Priyanka Pradhan 57
Contd…

• Tuples may be nested


>>> u = t, (1,2)
>>> u
((123, 542, 'bar'), (1,2))
• Empty tuples: ()
>>> empty = ()
>>> len(empty)
0 Priyanka Pradhan 58
Dictionaries

• A set of key-value pairs


• Dictionaries are mutable

>>> d = {1 : 'hello', 'two' : 42, 'blah' : [1,2,3]}


>>> d
{1: 'hello', 'two': 42, 'blah': [1, 2, 3]}
>>> d['blah']
[1, 2, 3]

Priyanka Pradhan 59
Contd..
• no particular order
• delete elements with del
>>> del tel['foo']
• keys() method  unsorted list of keys
>>> tel.keys()
['cs', 'lennox', 'hgs']
• use has_key() to check for existence
>>> tel.has_key('foo')
0 Priyanka Pradhan 60
Dictionaries: Add/Modify
• Entries can be changed by assigning to that entry
>>> d
{1: 'hello', 'two': 42, 'blah': [1, 2, 3]}
>>> d['two'] = 99
>>> d
{1: 'hello', 'two': 99, 'blah': [1, 2, 3]}
• Assigning to a key that does not exist adds an entry
>>> d[7] = 'new entry'
>>> d
{1: 'hello', 7: 'new entry', 'two': 99, 'blah': [1, 2, 3]}
Priyanka Pradhan 61
Dictionaries: Deleting Elements
• The del method deletes an element from a dictionary

>>> d
{1: 'hello', 2: 'there', 10: 'world'}
>>> del(d[2])
>>> d
{1: 'hello', 10: 'world'}

Priyanka Pradhan 62
Copying Dictionaries and Lists
• The built-in list >>> l1 = [1] >>> d = {1 : 10}
function will >>> l2 = list(l1) >>> d2 = d.copy()
copy a list >>> l1[0] = 22 >>> d[1] = 22
>>> l1 >>> d
• The dictionary [22] {1: 22}
has a method >>> l2 >>> d2
called copy [1] {1: 10}

Priyanka Pradhan 63
Dictionary Methods

Priyanka Pradhan 64
Data Type Summary

• Lists, Tuples, and Dictionaries can store any type


(including other lists, tuples, and dictionaries!)
• Only lists and dictionaries are mutable
• All variables are references

Priyanka Pradhan 65
Contd…

• Integers: 2323, 3234L


• Floating Point: 32.3, 3.1E2
• Complex: 3 + 2j, 1j
• Lists: l = [ 1,2,3]
• Tuples: t = (1,2,3)
• Dictionaries: d = {‘hello’ : ‘there’, 2 : 15}

Priyanka Pradhan 66
Modules

• collection of functions and variables,


typically in scripts
• definitions can be imported
• file name is module name + .py
• e.g., create module fibo.py
def fib(n): # write Fib. series up to n
...
def fib2(n): # returnPriyanka
Fib.Pradhan
series up to n 67
Contd…
• function definition + executable statements
• executed only when module is imported
• modules have private symbol tables
• avoids name clash for global variables
• accessible as module.globalname
• can import into name space:
>>> from fibo import fib, fib2
>>> fib(500)
• can import all names defined by module:
>>> from fibo import *
Priyanka Pradhan 68
Input
• The raw_input(string) method returns a line of
user input as a string
• The parameter is used as a prompt
• The string can be converted by using the
conversion methods int(string), float(string), etc.

Priyanka Pradhan 69
Input: Example
print “enter your name?"
name = raw_input("> ")

print "When were you born?"


birthyear = int(raw_input("> "))

print "Hi %s! You are %d years old!" % (name, 2017 - birthyear)
~: python input.py
What's your name?
> Michael
What year were you born?
>1980
Hi Michael! You are Pradhan
Priyanka 31 years old! 70
Booleans
• 0 and None are false
• Everything else is true
• True and False are aliases for 1 and 0 respectively

Priyanka Pradhan 71
Boolean Expressions
• Compound boolean expressions >>> True and False
short circuit False
• and and or return one of the >>> False or True
elements in the expression True
>>> 7 and 14
• Note that when None is returned 14
the interpreter does not print >>> None and 2
anything >>> None or 2
2

Priyanka Pradhan 72
No Braces
• Python uses indentation instead of braces to
determine the scope of expressions
• All lines must be indented the same amount to be part
of the scope (or indented more if part of an inner
scope)
• This forces the programmer to use proper indentation
since the indenting is part of the program!

Priyanka Pradhan 73
If Statements
import math
x = 30
if x <= 15 : >>> import ifstatement
y = x + 15 y = 0.999911860107
elif x <= 30 : >>>
y = x + 30 In interpreter
else :
y=x
print ‘y = ‘,
print math.sin(y)

In file ifstatement.py
Priyanka Pradhan 74
While Loops
>>> import whileloop
x=1 1
while x < 10 : 2
print x 3
x=x+1 4
5
6
In whileloop.py
7
8
9
>>>
In interpreter
Priyanka Pradhan 75
Loop Control Statements

break Jumps out of the closest


enclosing loop

continue Jumps to the top of the closest


enclosing loop

pass Does nothing, empty statement


placeholder

Priyanka Pradhan 76
The Loop Else Clause
• The optional else clause runs only if the loop exits
normally (not by break)

x=1
~: python whileelse.py
while x < 3 : 1
print x 2
x=x+1 hello
else: Run from the command line
print 'hello'
In whileelse.py
Priyanka Pradhan 77
The Loop Else Clause

x=1
while x < 5 :
print x
x=x+1 ~: python whileelse2.py
break 1
else :
print 'i got here'

whileelse2.py

Priyanka Pradhan 78
For Loops

for x in [1,7,13,2] : for x in range(5) :


forloop1.py forloop2.py print x
print x

~: python forloop1.py ~: python forloop2.py


1 0
7 1
13 2
2 3
4

range(N) generatesPriyanka
a listPradhan
of numbers [0,1, …, n-1] 79
For Loops
• For loops also may have the optional else clause

for x in range(5):
print x
break
else : ~: python elseforloop.py
print 'i got here' 1

elseforloop.py

Priyanka Pradhan 80
Function Basics

def max(x,y) : >>> import functionbasics


if x < y : >>> max(3,5)
return x 5
else : >>> max('hello', 'there')
return y 'there'
>>> max(3, 'hello')
'hello'
functionbasics.py

Priyanka Pradhan 81
Functions are first class objects
• Can be assigned to a variable
• Can be passed as a parameter
• Can be returned from a function
• Functions are treated like any other variable in
Python, the def statement simply assigns a
function to a variable

Priyanka Pradhan 82
Function names are like any variable
>>> x = 10
>>> x
10
• Functions are objects >>> def x () :
• The same reference ... print 'hello'
rules hold for them as >>> x
for other objects <function x at 0x619f0>
>>> x()
hello
>>> x = 'blah'
>>> x
'blah'
Priyanka Pradhan 83
Functions as Parameters

def foo(f, a) : >>> from funcasparam import *


return f(a) >>> foo(bar, 3)
9
def bar(x) :
return x * x

funcasparam.py Note that the function foo takes two


parameters and applies the first as a
function with the second as its
parameter

Priyanka Pradhan 84
Higher-Order Functions
map(func,seq) – for all i, applies func(seq[i]) and returns the
corresponding sequence of the calculated results.

>>> from highorder import *


def double(x): >>> lst = range(10)
return 2*x >>> lst
[0,1,2,3,4,5,6,7,8,9]
highorder.py >>> map(double,lst)
[0,2,4,6,8,10,12,14,16,18]

Priyanka Pradhan 85
Higher-Order Functions

filter(boolfunc,seq) – returns a sequence containing all those items


in seq for which boolfunc is True.

>>> from highorder import *


def even(x): >>> lst = range(10)
return ((x%2 == 0) >>> lst
[0,1,2,3,4,5,6,7,8,9]
highorder.py >>> filter(even,lst)
[0,2,4,6,8]

Priyanka Pradhan 86
Higher-Order Functions

reduce(func,seq) – applies func to the items of seq, from left to


right, two-at-time, to reduce the seq to a single value.

>>> from highorder import *


def plus(x,y): >>> lst = [‘h’,’e’,’l’,’l’,’o’]
return (x + y) >>> reduce(plus,lst)
‘hello’
highorder.py

Priyanka Pradhan 87
Functions Inside Functions
• Since they are like any other object, you can have
functions inside functions

def foo (x,y) : >>> from funcinfunc import *


def bar (z) : >>> foo(2,3)
return z * 2 7
return bar(x) + y

funcinfunc.py
Priyanka Pradhan 88
Functions Returning Functions
def foo (x) :
def bar(y) :
return x + y ~: python funcreturnfunc.py
return bar <function bar at 0x612b0>
# main 5
f = foo(3)
print f
print f(2)

funcreturnfunc.py

Priyanka Pradhan 89
Parameters: Defaults
• Parameters can be
>>> def foo(x = 3) :
assigned default ... print x
values ...
• They are overridden if >>> foo()
a parameter is given 3
>>> foo(10)
for them 10
• The type of the default >>> foo('hello')
doesn’t limit the type hello
of a parameter
Priyanka Pradhan 90
Parameters: Named
• Call by name
>>> def foo (a,b,c) :
• Any positional ... print a, b, c
arguments must ...
come before >>> foo(c = 10, a = 2, b = 14)
2 14 10
named ones in a
>>> foo(3, c = 2, b = 19)
call 3 19 2

Priyanka Pradhan 91
Anonymous Functions
• A lambda expression
returns a function
>>> f = lambda x,y : x + y
object >>> f(2,3)
• The body can only 5
be a simple >>> lst = ['one', lambda x : x * x, 3]
expression, not >>> lst[1](4)
complex statements 16

Priyanka Pradhan 92
Modules

• The highest level structure of Python


• Each file with the py suffix is a module
• Each module has its own namespace

Priyanka Pradhan 93

You might also like