EE 586Communication andSwitching Networks
INTRODUCTION TO PYTHON
Preparation
Install: Choose Python 2.7.x (currently 2.7.5) foryour specific computer, Windows, Mac, or Linux:
Run Python
IDLE ("Interactive DeveLopment Environment")
IDLE interactive mode
Type Python statements and expressions forimmediate execution.
IDLE script
Python programs are called scripts because theyare executed immediately, one line at a time.
To write a program, choose File, New Window. Anediting window pops up:
Type your program in the editing window, andsave it (File, Save As...).
CautionYou must give the script a name endingin .py - this is not done automatically.
Run Your Program
To run your program, choose Run, Run Module, orjust press F5:
Run Python outside IDLE
For example, through the command shell:
Python Features
Interpreted – platform independent, very highlevel, rapid development cycle
Very clear syntax – easy to learn, even just byexample
Fully Object Oriented, but not mandated
No need to initialize variables
Advanced built-in data structures allows for rapiddevelopment.
Basic Commands
Indentation and block-structure
Use colon and indention to identify a code block.
 
Note: no need for semicolons or brackets
n = 9
r = 1
while n > 0:
    r = r * n
    n = n – 1
print r
Strings
Initialize strings with pairs of single quotes, doublequotes, or triple quotes.
Merging variables with strings:
a = '\t this starts with a "tab".'
b = "this string has 'line feed'.\n"
c = "backslash \"quotes\"."
d = 'same for \'single\' quotes.'
e = """The triple quote
is nice for strings that take multiple
lines. 'single' and "double" quotes do not
need backslashes."""
st = "There are %d lines and %d characters \
in the file" % (chars, lines)
Lists
Very flexible built-in data container
Like an array, a list contains "list" or sequence ofdata.
A list can contain a mixture of data typesincluding any number type, strings, tuples, lists,dictionaries, functions, objects of any type.
Mixture of data types allows easy creation of datastructures.
Lists (continued)
List Slicing:
>>> x = ['first', 'second', 'third', 'forth']
>>> print x
['first', 'second', 'third', 'forth']
>>> x[2]
'third'
>>> x[2:]
['third', 'forth']
>>> x[:2]
['first', 'second']
>>> x[1:3]
['second', 'third']
>>> len(x)
4
Built-in functions operating on lists: in, +, *, del
List methods: append, count, extend, index,insert, pop, remove, reverse, sort
Lists (continued)
Built-in functions operating on lists: in, +, *,del>>> x = ['one', 'two', 'three', 'four']>>> x['one', 'two', 'three', 'four']...>>> for a in x:print aonetwothreefour...>>> y = [5, 6]>>> print x + y['one', 'two', 'three', 'four', 5, 6]...>>> print x * 2['one', 'two', 'three', 'four', 'one', 'two', 'three', 'four']...>>> del x[2]>>> print x['one', 'two', 'four']
Lists (continued)
List methods: append, count, extend, index,insert, pop, remove, reverse, sort>>> print x['one', 'two', 'four']>>> x.insert(2, 'three'); print x['one', 'two', 'three', 'four']>>> x.append(['five', 'six']); print x['one', 'two', 'three', 'four', ['five', 'six']]...>>> x.extend(['five', 'six']); print x['one', 'two', 'three', 'four', 'five', 'six']>>> x.count('four')1>>> x.index('five')4>>> x.pop()'six'>>> x['one', 'two', 'three', 'four', 'five']>>> x.remove('two'); print x['one', 'three', 'four', 'five']>>> x.reverse(); print x['five', 'four', 'three', 'one']>>> x.sort(); print x['five', 'four', 'one', 'three']
Tuples
A tuple is a list that is immutable (can not bechanged once created).x = (1, 2, 3)
Use tuples when possible because they are moreefficient than lists.
Operators and built-in functions (in, +, *, len,min, max) may be used with tuples.
Often used to allow multiple values returned froma function.x, y = function( … )
Tuples in Functions
>>> def assignVariables(a, b):
c = a
d = b
return c, d
>>> x, y = assignVariables(2, 4)
>>> x
2
>>> y
4
Dictionaries
A list of two item pairs (key, value).
The key is immutable.
The value may be any object.
Provides an associative array functionalityimplemented using hash tables.
Built-in functions: len, del
Dictionary methods: clear, copy, get,has_key, items, keys, update, values
Dictionary examples
>>> d = {'one':1, 'two':2}
>>> d['one']
1
>>> d['one'] = 3
>>> d['one']
3
>>> d
{'two': 2, 'one': 3}
Dictionary examples
>>> d.items()
[('two', 2), ('one', 3)]
>>> d.keys()
['two', 'one']
>>> d.values()
[2, 3]
>>> d.has_key('two')
True
Dictionary examples
>>> d = {'one':1, 'two':2}
>>> e = d.copy(); print e
{'two': 2, 'one': 1}
>>> f = d; print f
{'two': 2, 'one': 1}
>>> d.update({'three':3})
>>> print d
{'three': 3, 'two': 2, 'one': 1}
>>> print e
{'two': 2, 'one': 1}
>>> print f
{'three': 3, 'two': 2, 'one': 1}
The 'for' loop
>>> x = [ 1, 2, 3 ]
>>> for i in x:
     print i
1
2
3
>>> range(5)
[0, 1, 2, 3, 4]
>>> range(0,6,2)
[0, 2, 4]
>>> range(2,6)
[2, 3, 4, 5]
Basic I/O – printing
Two ways of displaying text:
>>> import sys
>>> for i in range(3):
    sys.stdout.write("Hi ")
Hi Hi Hi
>>> for i in range(3):
     print("Hi")
Hi
Hi
Hi
Basic I/O – reading data
>>> x = input("Enter anumber: ")
Enter a number: 5
>>> x
5
>>> name = input("Enter yourname: ")
Enter your name: Tim
Traceback (most recent calllast):
  File "<pyshell#47>", line1,
. . .
NameError: name 'Tim' is notdefined
>>> name = input("Enter yourname: ")
Enter your name: 'Tim'
>>> name
'Tim'
>>> name = raw_input("Enteryour name: ")
Enter your name: Tim
>>> name
'Tim'
>>> x = raw_input("Enter anumber: ")
Enter a number: 3
>>> x
'3'
File I/O – reading a text file
Reading a text file:
>>> fileobj = open("foo.txt", 'r' )
>>> lines =fileobj.readlines()
>>> lines
['Test file\n', 'linetwo\n', 'linethree']
>>> fileobj.close()
A line at a time:
import sys
fileobj = open("foo.txt",'r')
lines = [] # an empty list
while 1:
    line =fileobj.readline()
    if line == "":
        break
    lines.append(line)
for l in lines:
    sys.stdout.write(l)
sys.stdout.write('\n')
fileobj.close()
File I/O – Writing a file
fileobject = open("bar", 'w' )
fileobject.write("Hello, World\n")
fileobject.close()
Functions
>>> def test(x):
            x = x + 2
>>> z = 2
>>> test(z)
>>> print z
2
>>> def stest(st):
           st = st + "Hello"
>>> s = "joe"
>>> stest(s)
>>> print s
joe
>>> class ctest:
            def __init__(self, n):
                self.n = n
>>> def c1test(n):
            n.n = n.n + 2
>>> x = ctest(5)
>>> x.n
5
>>> c1test(x)
>>> x.n
7
Classes
Syntax
Class classname(base_class):
    “optional documentation string”
    static variable declarations
    method declarations
Method declarations are just functiondefinitions.
The __init__(self, other_args)method is initialization code, not aconstructor.
Use the self.var_name to reference anyclass data variables.
Modules
Allow for code reuse
Provide a tool for grouping system components
Allow components to be shared across multiplefunctions
import <module>: executes all code in a module
from <module> import <name>: executesspecific code within a module
Latter results in a more efficient program if onlycertain functions and attributes of a module areneeded, since only the necessary code from themodule is run
Exceptions
Handled through the use oftry [except else finally] blocks
import systry:file = open('noFile', 'r')except IOError:print 'File does not exist.'sys.exit(1)else:print 'File exists.'file.close()
else block executes only if no exceptions arethrown, while finally block always executes