Basic Python
Basic Python
Language
1
Books include:
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
5
Web Frameworks
• Django
• Flask
• Pylons
• TurboGear
s
• Zope
• Grok
6
Introduction
• Multi-purpose (Web, GUI, Scripting,
etc.)
• Object Oriented
• Interpreted
• Strongly typed and Dynamically
typed
• Focus on readability and
productivity
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 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
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
1
0
Who Uses Python
• Google
• PBS
• NASA
• Library of Congress
• the ONION
• ...the list goes on...
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
12
Indentation
• Most languages don’t care about
indentation
• Most humans do
• We tend to group similar things
together
13
Hello World
14
Python Overview
15
The Python Interpreter
16
The print Statement
•Elements separated by
commas print with a space
>>> print 'hello'
between them
•A comma at the end of the hello
>>> print 'hello', 'there'
statement (print ‘hello’,) will
hello there
not print a newline
character
17
Documentation
18
Variable
s
• 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
19
Everything is an object
• Everything means
>>> x = 7
everything, including
>>> x
functions and 7
classes (more on this >>> x
later!) =
• Data type is a property 'hello'
>>> x
of the object and not 'hello'
of the variable >>>
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"
21
String operations
• concatenate with + or neighbours
– word = 'Help' + x
– word = 'Help' 'a'
• subscripting of strings
– 'Hello'[2] 'l'
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
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)
25
Numbers are immutable
x 4.5
>>> x = 4.5
>>> y = x y
>>> y += 3
x 4.5
>>> x
4.5 7.5
>>> y y
7.5
26
String Literals
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! 28
2
8
though I am
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'
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
>>> "One, %d, three" % 2
representation.
'One, 2, three'
>>> "%d, two, %s" %
(1,3)
'1, two, 3'
>>> "%s two %s" % (1, 'three')
'1 two three'
>>> 30
Do nothing
• pass does nothing
• syntactic filler
while 1:
pass
31
Operators
• Arithmetic
32
String Manipulation
33
Logical Comparison
34
Identity Comparison
35
Arithmetic Comparison
36
Class Declaration
37
Class
Attributes
• Attributes assigned at class declaration
should always be immutable
38
Class Methods
39
Class Instantiation &
Attribute Access
40
Class Inheritance
41
Imports
42
Error Handling
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)]
• Issues with shared >>> x[2]
(3+2j)
references and mutability >>>
• Same subset operations as x[0:2]
Strings [1,
'hello']
44
List
• lists can be heterogeneous
– a = ['spam', 'eggs', 100, 1234, 2*2]
– a[0:2] = [1,12]
– len(a) Priyanka Pradhan 45
4
5
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
46
Contd…
• count(x)
– how many times x appears in list
• sort()
– sort items in place
• reverse()
– reverse list
47
Lists: Modifying Content
• x[i] = a reassigns >>> x = [1,2,3]
>>> y = x
the ith element to the
>>> x[1] = 15
value a >>> x
• Since x and y point to [1, 15, 3]
the same list object, >>> y
both are changed [1, 15, 3]
>>>
• The method append x.append
also modifies the list (12)
>>> y
[1, 15, 3,
48
12]
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 49
4
Priyanka Pradhan >>> 9
[1, 2, 3, 12]
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)' 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']
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“
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 '
>>>
53
More String methods
email.startswith(“c")
endswith(“u”) True/False
>>> “chen".upper() 54
‘CHEN'
“\” 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
55
Tuple
s
• 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) >>>
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, 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
5
8
Dictionaries
• A set of key-value pairs
• Dictionaries are mutable
Priyanka Pradhan 59
5
9
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
0
>>> tel.has_key('foo')
Priyanka Pradhan 60
6
0
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]}
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'}
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}
63
Dictionary Methods
64
Data Type Summary
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}
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): # return F i b . s e ries
Pri yan k a P rad h an 67
6
7
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 *
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.
69
Input: Example
print “enter your name?"
name = raw_input("> ")
71
Boolean Expressions
• Compound boolean expressions >>> True and False
short circuit False
• and and or return one of the >>> False or True
True
elements in the expression
>>> 7 and 14
• Note that when None is returned 14
the interpreter does not print >>> None and 2
anything >>> None or 2
2
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!
73
If Statements
import math
x = 30
if x <= 15 : >>> import ifstatement
y = x + 15 y = 0.999911860107
elif x <= 30 >>>
: y In interpreter
= x + 30
else :
y=x
print ‘y = ‘,
print
In file ifstatement.py
math.sin(y)
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
75
Loop Control Statements
76
The Loop Else Clause
• The optional else clause runs only if the loop exits
normally (not by break)
x=1
~: python whileelse.py
1
while x < 3 :
2
print x
hello
x=x+1
else: Run from the command line
print 'hello'
In whileelse.py
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
78
For Loops
for x in range(5):
print x
break
else : ~: python elseforloop.py
pri 1
nt 'i
got
elseforloop.py
here'
80
Function Basics
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
82
Function names are like any variable
>>> x = 10
>>> x
10
• Functions are objects
>>>
• The same reference def x
rules hold for them as () :
for other objects ...
print
'hello'
>>> x
<func
tion x
at 83
Functions as Parameters
84
Higher-Order Functions
map(func,seq) – for all i, applies func(seq[i]) and returns the
corresponding sequence of the calculated results.
85
Higher-Order Functions
86
Higher-Order Functions
87
Functions Inside Functions
• Since they are like any other object, you can have
functions inside functions
funcinfunc.py
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
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
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
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 =
expression, not ['one',
complex statements lambda x :
x * x, 3]
>>> lst[1](4)
16
92
Modules
93