SlideShare a Scribd company logo
Python Programming
D. Sheefa Ruby Grace
Department of Computer Science
Sarah Tucker College
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
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"
 continuation via  or use """ long text """"
String operations
 concatenate with + or neighbors
 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
Lists
 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
Basic programming
a,b = 0, 1
# non-zero = true
while b < 10:
# formatted output, without 
n
print b,
# multiple assignment
a,b = b, a+b
Control flow: if
x = int(raw_input("Please enter #:"))
if x < 0:
x = 0
print 'Negative changed to zero'
elif x == 0:
print 'Zero'
elif x == 1:
print 'Single'
else:
print 'More'
 no case statement
Control flow: for
a = ['cat', 'window', 'defenestrate']
for x in a:
print x, len(x)
 no arithmetic progression, but
 range(10)  [0, 1, 2, 3, 4, 5, 6, 7, 8,
9]
 for i in range(len(a)):
print i, a[i]
 do not modify the sequence being
iterated over
Loops: break, continue, else
 break and continue like C
 else after loop exhaustion
for n in range(2,10):
for x in range(2,n):
if n % x == 0:
print n, 'equals', x, '*', n/x
break
else:
# loop fell through without finding a
factor
print n, 'is prime'
Defining functions
def fib(n):
"""Print a Fibonacci series up to n."""
a, b = 0, 1
while b < n:
print b,
a, b = b, a+b
>>> fib(2000)
 First line is docstring
 first look for variables in local, then global
 need global to assign global variables
Functions: default argument
values
def ask_ok(prompt, retries=4,
complaint='Yes or no, please!'):
while 1:
ok = raw_input(prompt)
if ok in ('y', 'ye', 'yes'): return 1
if ok in ('n', 'no'): return 0
retries = retries - 1
if retries < 0: raise IOError,
'refusenik error'
print complaint
>>> ask_ok('Really?')
Keyword arguments
 last arguments can be given as keywords
def parrot(voltage, state='a stiff', action='voom',
type='Norwegian blue'):
print "-- This parrot wouldn't", action,
print "if you put", voltage, "Volts through it."
print "Lovely plumage, the ", type
print "-- It's", state, "!"
parrot(1000)
parrot(action='VOOOM', voltage=100000)
Lambda forms
 anonymous functions
 may not work in older versions
def make_incrementor(n):
return lambda x: x + n
f = make_incrementor(42)
f(0)
f(1)
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
List methods
 count(x)
 how many times x appears in list
 sort()
 sort items in place
 reverse()
 reverse list
Functional programming tools
 filter(function, sequence)
def f(x): return x%2 != 0 and x%3 0
filter(f, range(2,25))
 map(function, sequence)
 call function for each item
 return list of return values
 reduce(function, sequence)
 return a single value
 call binary function on the first two items
 then on the result and next item
 iterate
List comprehensions (2.0)
 Create lists without map(), filter(), lambda
 = expression followed by for clause + zero or more for or
of clauses
>>> vec = [2,4,6]
>>> [3*x for x in vec]
[6, 12, 18]
>>> [{x: x**2} for x in vec}
[{2: 4}, {4: 16}, {6: 36}]
List comprehensions
 cross products:
>>> vec1 = [2,4,6]
>>> vec2 = [4,3,-9]
>>> [x*y for x in vec1 for y in vec2]
[8,6,-18, 16,12,-36, 24,18,-54]
>>> [x+y for x in vec1 and y in vec2]
[6,5,-7,8,7,-5,10,9,-3]
>>> [vec1[i]*vec2[i] for i in
range(len(vec1))]
[8,12,-54]
List comprehensions
 can also use if:
>>> [3*x for x in vec if x >
3]
[12, 18]
>>> [3*x for x in vec if x <
2]
[]
del – removing list items
 remove by index, not value
 remove slices from list (rather than by
assigning an empty list)
>>> a = [-1,1,66.6,333,333,1234.5]
>>> del a[0]
>>> a
[1,66.6,333,333,1234.5]
>>> del a[2:4]
>>> a
[1,66.6,1234.5]
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')
Tuples
 Tuples may be nested
>>> u = t, (1,2)
>>> u
((123, 542, 'bar'), (1,2))
 kind of like structs, but no element
names:
 (x,y) coordinates
 database records
 like strings, immutable  can't assign to
individual items
Tuples
 Empty tuples: ()
>>> empty = ()
>>> len(empty)
0
 one item  trailing comma
>>> singleton = 'foo',
Tuples
 sequence unpacking  distribute elements across
variables
>>> t = 123, 543, 'bar'
>>> x, y, z = t
>>> x
123
 packing always creates tuple
 unpacking works for any sequence
Dictionaries
 like Tcl or awk associative arrays
 indexed by keys
 keys are any immutable type: e.g., tuples
 but not lists (mutable!)
 uses 'key: value' notation
>>> tel = {'hgs' : 7042, 'lennox': 7018}
>>> tel['cs'] = 7000
>>> tel
Dictionaries
 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
Conditions
 can check for sequence membership
with is and is not:
>>> if (4 in vec):
... print '4 is'
 chained comparisons: a less than b
AND b equals c:
a < b == c
 and and or are short-circuit operators:
 evaluated from left to right
 stop evaluation as soon as outcome clear
Conditions
 Can assign comparison to variable:
>>> s1,s2,s3='', 'foo', 'bar'
>>> non_null = s1 or s2 or s3
>>> non_null
foo
 Unlike C, no assignment within expression
Comparing sequences
(1,2,3) < (1,2,4)
[1,2,3] < [1,2,4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1,2,3) == (1.0,2.0,3.0)
(1,2) < (1,2,-1)
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 Fib. series up to n
Modules
 import module:
import fibo
 Use modules via "name space":
>>> fibo.fib(1000)
>>> fibo.__name__
'fibo'
 can give it a local name:
>>> fib = fibo.fib
>>> fib(500)
Modules
 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 *
Module search path
 current directory
 list of directories specified in PYTHONPATH
environment variable
 uses installation-default if not defined,
e.g., .:/usr/local/lib/python
 uses sys.path
>>> import sys
>>> sys.path
['', 'C:PROGRA~1Python2.2', 'C:Program Files
Python2.2DLLs', 'C:Program FilesPython2.2lib', 'C:
Program FilesPython2.2liblib-tk', 'C:Program Files
Python2.2', 'C:Program FilesPython2.2libsite-
packages']
Classes
 mixture of C++ and Modula-3
 multiple base classes
 derived class can override any methods of
its base class(es)
 method can call the method of a base
class with the same name
 objects have private data
 C++ terms:
 all class members are public
 all member functions are virtual
 no constructors or destructors (not needed)
Classes
 classes (and data types) are objects
 built-in types cannot be used as base classes by user
 arithmetic operators, subscripting can be redefined for
class instances (like C++, unlike Java)
Class definitions
Class ClassName:
<statement-1>
...
<statement-N>
 must be executed
 can be executed conditionally (see Tcl)
 creates new namespace
Namespaces
 mapping from name to object:
 built-in names (abs())
 global names in module
 local names in function invocation
 attributes = any following a dot
 z.real, z.imag
 attributes read-only or writable
 module attributes are writeable
Namespaces
 scope = textual region of Python program
where a namespace is directly accessible
(without dot)
 innermost scope (first) = local names
 middle scope = current module's global names
 outermost scope (last) = built-in names
 assignments always affect innermost
scope
 don't copy, just create name bindings to
objects
 global indicates name is in global scope
Class objects
 obj.name references (plus module!):
class MyClass:
"A simple example class"
i = 123
def f(self):
return 'hello world'
>>> MyClass.i
123
 MyClass.f is method object
Class objects
 class instantiation:
>>> x = MyClass()
>>> x.f()
'hello world'
 creates new instance of class
 note x = MyClass vs. x = MyClass()
 ___init__() special method for
initialization of object
def __init__(self,realpart,imagpart):
self.r = realpart
self.i = imagpart
Instance objects
 attribute references
 data attributes (C++/Java data members)
 created dynamically
x.counter = 1
while x.counter < 10:
x.counter = x.counter * 2
print x.counter
del x.counter
Method objects
 Called immediately:
x.f()
 can be referenced:
xf = x.f
while 1:
print xf()
 object is passed as first argument of function  'self'
 x.f() is equivalent to MyClass.f(x)
Inheritance
class
DerivedClassName(BaseClassName)
<statement-1>
...
<statement-N>
 search class attribute, descending chain of base classes
 may override methods in the base class
 call directly via
BaseClassName.method
Multiple inheritance
class
DerivedClass(Base1,Base2,Base3)
:
<statement>
 depth-first, left-to-right
 problem: class derived from two classes with a common
base class
Private variables
 No real support, but textual replacement (name
mangling)
 __var is replaced by _classname_var
 prevents only accidental modification, not true
protection
Exceptions
 syntax (parsing) errors
while 1 print 'Hello World'
File "<stdin>", line 1
while 1 print 'Hello World'
^
SyntaxError: invalid syntax
 exceptions
 run-time errors
 e.g., ZeroDivisionError, NameError, TypeError
Handling exceptions
while 1:
try:
x = int(raw_input("Please enter a number: "))
break
except ValueError:
print "Not a valid number"
 First, execute try clause
 if no exception, skip except clause
 if exception, skip rest of try clause and use
except clause
 if no matching exception, attempt outer try
statement
Handling exceptions
 try.py
import sys
for arg in sys.argv[1:]:
try:
f = open(arg, 'r')
except IOError:
print 'cannot open', arg
else:
print arg, 'lines:',
len(f.readlines())
f.close
 e.g., as python try.py *.py

More Related Content

Similar to python language programming presentation (20)

PPTX
Python Workshop - Learn Python the Hard Way
Utkarsh Sengar
 
PPT
python within 50 page .ppt
sushil155005
 
PPTX
Chapter 02 functions -class xii
Praveen M Jigajinni
 
ODP
Functions In Scala
Knoldus Inc.
 
PPT
Python classes in mumbai
Vibrant Technologies & Computers
 
PPTX
GE8151 Problem Solving and Python Programming
Muthu Vinayagam
 
PPT
PYTHON
JOHNYAMSON
 
PDF
Funkcija, objekt, python
Robert Lujo
 
PDF
Python Cheat Sheet
Muthu Vinayagam
 
PPT
04_python_functions.ppt You can define functions to provide the required func...
anaveenkumar4
 
KEY
Clojure Intro
thnetos
 
PPTX
Scala for curious
Tim (dev-tim) Zadorozhniy
 
PDF
Python idiomatico
PyCon Italia
 
PDF
Pydiomatic
rik0
 
PPTX
scripting in Python
Team-VLSI-ITMU
 
PPTX
Python list tuple dictionary .pptx
miteshchaudhari4466
 
PPTX
Python Modules and Libraries
Venugopalavarma Raja
 
PPT
ComandosDePython_ComponentesBasicosImpl.ppt
oscarJulianPerdomoCh1
 
PDF
(How) can we benefit from adopting scala?
Tomasz Wrobel
 
Python Workshop - Learn Python the Hard Way
Utkarsh Sengar
 
python within 50 page .ppt
sushil155005
 
Chapter 02 functions -class xii
Praveen M Jigajinni
 
Functions In Scala
Knoldus Inc.
 
Python classes in mumbai
Vibrant Technologies & Computers
 
GE8151 Problem Solving and Python Programming
Muthu Vinayagam
 
PYTHON
JOHNYAMSON
 
Funkcija, objekt, python
Robert Lujo
 
Python Cheat Sheet
Muthu Vinayagam
 
04_python_functions.ppt You can define functions to provide the required func...
anaveenkumar4
 
Clojure Intro
thnetos
 
Scala for curious
Tim (dev-tim) Zadorozhniy
 
Python idiomatico
PyCon Italia
 
Pydiomatic
rik0
 
scripting in Python
Team-VLSI-ITMU
 
Python list tuple dictionary .pptx
miteshchaudhari4466
 
Python Modules and Libraries
Venugopalavarma Raja
 
ComandosDePython_ComponentesBasicosImpl.ppt
oscarJulianPerdomoCh1
 
(How) can we benefit from adopting scala?
Tomasz Wrobel
 

Recently uploaded (20)

PDF
Python Mini Project: Command-Line Quiz Game for School/College Students
MPREETHI7
 
PDF
Authentication Devices in Fog-mobile Edge Computing Environments through a Wi...
ijujournal
 
PPTX
darshai cross section and river section analysis
muk7971
 
PPTX
Artificial Intelligence jejeiejj3iriejrjifirirjdjeie
VikingsGaming2
 
PDF
PROGRAMMING REQUESTS/RESPONSES WITH GREATFREE IN THE CLOUD ENVIRONMENT
samueljackson3773
 
PDF
NFPA 10 - Estandar para extintores de incendios portatiles (ed.22 ENG).pdf
Oscar Orozco
 
PDF
輪読会資料_Miipher and Miipher2 .
NABLAS株式会社
 
PPTX
Electrical_Safety_EMI_EMC_Presentation.pptx
drmaneharshalid
 
PPTX
Precooling and Refrigerated storage.pptx
ThongamSunita
 
PPTX
Comparison of Flexible and Rigid Pavements in Bangladesh
Arifur Rahman
 
PDF
Tesia Dobrydnia - An Avid Hiker And Backpacker
Tesia Dobrydnia
 
PPTX
template.pptxr4t5y67yrttttttttttttttttttttttttttttttttttt
SithamparanaathanPir
 
DOCX
Engineering Geology Field Report to Malekhu .docx
justprashant567
 
PDF
How to Buy Verified CashApp Accounts IN 2025
Buy Verified CashApp Accounts
 
PDF
lesson4-occupationalsafetyandhealthohsstandards-240812020130-1a7246d0.pdf
arvingallosa3
 
PDF
Module - 4 Machine Learning -22ISE62.pdf
Dr. Shivashankar
 
PPTX
Diabetes diabetes diabetes diabetes jsnsmxndm
130SaniyaAbduNasir
 
PDF
LLC CM NCP1399 SIMPLIS MODEL MANUAL.PDF
ssuser1be9ce
 
PPTX
UNIT 1 - INTRODUCTION TO AI and AI tools and basic concept
gokuld13012005
 
PDF
William Stallings - Foundations of Modern Networking_ SDN, NFV, QoE, IoT, and...
lavanya896395
 
Python Mini Project: Command-Line Quiz Game for School/College Students
MPREETHI7
 
Authentication Devices in Fog-mobile Edge Computing Environments through a Wi...
ijujournal
 
darshai cross section and river section analysis
muk7971
 
Artificial Intelligence jejeiejj3iriejrjifirirjdjeie
VikingsGaming2
 
PROGRAMMING REQUESTS/RESPONSES WITH GREATFREE IN THE CLOUD ENVIRONMENT
samueljackson3773
 
NFPA 10 - Estandar para extintores de incendios portatiles (ed.22 ENG).pdf
Oscar Orozco
 
輪読会資料_Miipher and Miipher2 .
NABLAS株式会社
 
Electrical_Safety_EMI_EMC_Presentation.pptx
drmaneharshalid
 
Precooling and Refrigerated storage.pptx
ThongamSunita
 
Comparison of Flexible and Rigid Pavements in Bangladesh
Arifur Rahman
 
Tesia Dobrydnia - An Avid Hiker And Backpacker
Tesia Dobrydnia
 
template.pptxr4t5y67yrttttttttttttttttttttttttttttttttttt
SithamparanaathanPir
 
Engineering Geology Field Report to Malekhu .docx
justprashant567
 
How to Buy Verified CashApp Accounts IN 2025
Buy Verified CashApp Accounts
 
lesson4-occupationalsafetyandhealthohsstandards-240812020130-1a7246d0.pdf
arvingallosa3
 
Module - 4 Machine Learning -22ISE62.pdf
Dr. Shivashankar
 
Diabetes diabetes diabetes diabetes jsnsmxndm
130SaniyaAbduNasir
 
LLC CM NCP1399 SIMPLIS MODEL MANUAL.PDF
ssuser1be9ce
 
UNIT 1 - INTRODUCTION TO AI and AI tools and basic concept
gokuld13012005
 
William Stallings - Foundations of Modern Networking_ SDN, NFV, QoE, IoT, and...
lavanya896395
 
Ad

python language programming presentation

  • 1. Python Programming D. Sheefa Ruby Grace Department of Computer Science Sarah Tucker College
  • 2. 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
  • 3. 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"  continuation via or use """ long text """"
  • 4. String operations  concatenate with + or neighbors  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
  • 5. Lists  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
  • 6. Basic programming a,b = 0, 1 # non-zero = true while b < 10: # formatted output, without n print b, # multiple assignment a,b = b, a+b
  • 7. Control flow: if x = int(raw_input("Please enter #:")) if x < 0: x = 0 print 'Negative changed to zero' elif x == 0: print 'Zero' elif x == 1: print 'Single' else: print 'More'  no case statement
  • 8. Control flow: for a = ['cat', 'window', 'defenestrate'] for x in a: print x, len(x)  no arithmetic progression, but  range(10)  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]  for i in range(len(a)): print i, a[i]  do not modify the sequence being iterated over
  • 9. Loops: break, continue, else  break and continue like C  else after loop exhaustion for n in range(2,10): for x in range(2,n): if n % x == 0: print n, 'equals', x, '*', n/x break else: # loop fell through without finding a factor print n, 'is prime'
  • 10. Defining functions def fib(n): """Print a Fibonacci series up to n.""" a, b = 0, 1 while b < n: print b, a, b = b, a+b >>> fib(2000)  First line is docstring  first look for variables in local, then global  need global to assign global variables
  • 11. Functions: default argument values def ask_ok(prompt, retries=4, complaint='Yes or no, please!'): while 1: ok = raw_input(prompt) if ok in ('y', 'ye', 'yes'): return 1 if ok in ('n', 'no'): return 0 retries = retries - 1 if retries < 0: raise IOError, 'refusenik error' print complaint >>> ask_ok('Really?')
  • 12. Keyword arguments  last arguments can be given as keywords def parrot(voltage, state='a stiff', action='voom', type='Norwegian blue'): print "-- This parrot wouldn't", action, print "if you put", voltage, "Volts through it." print "Lovely plumage, the ", type print "-- It's", state, "!" parrot(1000) parrot(action='VOOOM', voltage=100000)
  • 13. Lambda forms  anonymous functions  may not work in older versions def make_incrementor(n): return lambda x: x + n f = make_incrementor(42) f(0) f(1)
  • 14. 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
  • 15. List methods  count(x)  how many times x appears in list  sort()  sort items in place  reverse()  reverse list
  • 16. Functional programming tools  filter(function, sequence) def f(x): return x%2 != 0 and x%3 0 filter(f, range(2,25))  map(function, sequence)  call function for each item  return list of return values  reduce(function, sequence)  return a single value  call binary function on the first two items  then on the result and next item  iterate
  • 17. List comprehensions (2.0)  Create lists without map(), filter(), lambda  = expression followed by for clause + zero or more for or of clauses >>> vec = [2,4,6] >>> [3*x for x in vec] [6, 12, 18] >>> [{x: x**2} for x in vec} [{2: 4}, {4: 16}, {6: 36}]
  • 18. List comprehensions  cross products: >>> vec1 = [2,4,6] >>> vec2 = [4,3,-9] >>> [x*y for x in vec1 for y in vec2] [8,6,-18, 16,12,-36, 24,18,-54] >>> [x+y for x in vec1 and y in vec2] [6,5,-7,8,7,-5,10,9,-3] >>> [vec1[i]*vec2[i] for i in range(len(vec1))] [8,12,-54]
  • 19. List comprehensions  can also use if: >>> [3*x for x in vec if x > 3] [12, 18] >>> [3*x for x in vec if x < 2] []
  • 20. del – removing list items  remove by index, not value  remove slices from list (rather than by assigning an empty list) >>> a = [-1,1,66.6,333,333,1234.5] >>> del a[0] >>> a [1,66.6,333,333,1234.5] >>> del a[2:4] >>> a [1,66.6,1234.5]
  • 21. 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')
  • 22. Tuples  Tuples may be nested >>> u = t, (1,2) >>> u ((123, 542, 'bar'), (1,2))  kind of like structs, but no element names:  (x,y) coordinates  database records  like strings, immutable  can't assign to individual items
  • 23. Tuples  Empty tuples: () >>> empty = () >>> len(empty) 0  one item  trailing comma >>> singleton = 'foo',
  • 24. Tuples  sequence unpacking  distribute elements across variables >>> t = 123, 543, 'bar' >>> x, y, z = t >>> x 123  packing always creates tuple  unpacking works for any sequence
  • 25. Dictionaries  like Tcl or awk associative arrays  indexed by keys  keys are any immutable type: e.g., tuples  but not lists (mutable!)  uses 'key: value' notation >>> tel = {'hgs' : 7042, 'lennox': 7018} >>> tel['cs'] = 7000 >>> tel
  • 26. Dictionaries  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
  • 27. Conditions  can check for sequence membership with is and is not: >>> if (4 in vec): ... print '4 is'  chained comparisons: a less than b AND b equals c: a < b == c  and and or are short-circuit operators:  evaluated from left to right  stop evaluation as soon as outcome clear
  • 28. Conditions  Can assign comparison to variable: >>> s1,s2,s3='', 'foo', 'bar' >>> non_null = s1 or s2 or s3 >>> non_null foo  Unlike C, no assignment within expression
  • 29. Comparing sequences (1,2,3) < (1,2,4) [1,2,3] < [1,2,4] 'ABC' < 'C' < 'Pascal' < 'Python' (1,2,3) == (1.0,2.0,3.0) (1,2) < (1,2,-1)
  • 30. 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 Fib. series up to n
  • 31. Modules  import module: import fibo  Use modules via "name space": >>> fibo.fib(1000) >>> fibo.__name__ 'fibo'  can give it a local name: >>> fib = fibo.fib >>> fib(500)
  • 32. Modules  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 *
  • 33. Module search path  current directory  list of directories specified in PYTHONPATH environment variable  uses installation-default if not defined, e.g., .:/usr/local/lib/python  uses sys.path >>> import sys >>> sys.path ['', 'C:PROGRA~1Python2.2', 'C:Program Files Python2.2DLLs', 'C:Program FilesPython2.2lib', 'C: Program FilesPython2.2liblib-tk', 'C:Program Files Python2.2', 'C:Program FilesPython2.2libsite- packages']
  • 34. Classes  mixture of C++ and Modula-3  multiple base classes  derived class can override any methods of its base class(es)  method can call the method of a base class with the same name  objects have private data  C++ terms:  all class members are public  all member functions are virtual  no constructors or destructors (not needed)
  • 35. Classes  classes (and data types) are objects  built-in types cannot be used as base classes by user  arithmetic operators, subscripting can be redefined for class instances (like C++, unlike Java)
  • 36. Class definitions Class ClassName: <statement-1> ... <statement-N>  must be executed  can be executed conditionally (see Tcl)  creates new namespace
  • 37. Namespaces  mapping from name to object:  built-in names (abs())  global names in module  local names in function invocation  attributes = any following a dot  z.real, z.imag  attributes read-only or writable  module attributes are writeable
  • 38. Namespaces  scope = textual region of Python program where a namespace is directly accessible (without dot)  innermost scope (first) = local names  middle scope = current module's global names  outermost scope (last) = built-in names  assignments always affect innermost scope  don't copy, just create name bindings to objects  global indicates name is in global scope
  • 39. Class objects  obj.name references (plus module!): class MyClass: "A simple example class" i = 123 def f(self): return 'hello world' >>> MyClass.i 123  MyClass.f is method object
  • 40. Class objects  class instantiation: >>> x = MyClass() >>> x.f() 'hello world'  creates new instance of class  note x = MyClass vs. x = MyClass()  ___init__() special method for initialization of object def __init__(self,realpart,imagpart): self.r = realpart self.i = imagpart
  • 41. Instance objects  attribute references  data attributes (C++/Java data members)  created dynamically x.counter = 1 while x.counter < 10: x.counter = x.counter * 2 print x.counter del x.counter
  • 42. Method objects  Called immediately: x.f()  can be referenced: xf = x.f while 1: print xf()  object is passed as first argument of function  'self'  x.f() is equivalent to MyClass.f(x)
  • 43. Inheritance class DerivedClassName(BaseClassName) <statement-1> ... <statement-N>  search class attribute, descending chain of base classes  may override methods in the base class  call directly via BaseClassName.method
  • 44. Multiple inheritance class DerivedClass(Base1,Base2,Base3) : <statement>  depth-first, left-to-right  problem: class derived from two classes with a common base class
  • 45. Private variables  No real support, but textual replacement (name mangling)  __var is replaced by _classname_var  prevents only accidental modification, not true protection
  • 46. Exceptions  syntax (parsing) errors while 1 print 'Hello World' File "<stdin>", line 1 while 1 print 'Hello World' ^ SyntaxError: invalid syntax  exceptions  run-time errors  e.g., ZeroDivisionError, NameError, TypeError
  • 47. Handling exceptions while 1: try: x = int(raw_input("Please enter a number: ")) break except ValueError: print "Not a valid number"  First, execute try clause  if no exception, skip except clause  if exception, skip rest of try clause and use except clause  if no matching exception, attempt outer try statement
  • 48. Handling exceptions  try.py import sys for arg in sys.argv[1:]: try: f = open(arg, 'r') except IOError: print 'cannot open', arg else: print arg, 'lines:', len(f.readlines()) f.close  e.g., as python try.py *.py