340 likes | 508 Views
Scripting with Python. What is a scripting language? What is Python?. Scripting Languages. Originally, a script was a file containing a sequence of commands that needed to be executed Control structures were added to make it possible to do more with scripts.
E N D
Scripting with Python What is a scripting language? What is Python?
Scripting Languages • Originally, a script was a file containing a sequence of commands that needed to be executed • Control structures were added to make it possible to do more with scripts
Characteristics of Scripting Languages • Generally interpreted • Dynamic typing - no declarations • Make text processing easy • Often provide pattern matching for strings • Provide file and directory manipulation • Make it easy to do things quickly
Basic Scripting Languages • Unix and Linux come with shell programs which are programmable • sh • bash • ksh • csh • DOS had BAT files
Scripting in Other Environments • Even with a GUI operating system, it is still useful to be able to automate repetitive tasks • Windows still has bat files • Mac OS has AppleScript • Some applications have a scripting language built into them • Microsoft applications have Visual Basic for Applications (VBA) • Hypercard (Apple) had HyperTalk
Other Scripting Languages • Other scripting languages were developed to provide increased capability • sed -- adapted from the UNIX ed editor in 1977 • AWK -- created by Ajo, Wienberger and Kernighan in 1977 • Tcl -- an extensible scripting language written by John Ousterhout in 1987 • Perl -- created by Larry Wall in 1986 • Python-- created in 1989 by Guido van Rossum • Ruby -- created in 1993 by Yukihiro Matsumoto
Scripting and the Web • More recently, a number of scripting languages have been developed for use with web browsers • PHP • JavaScript • ASP (part of Microsoft .NET framework)
the shell languages sed awk perl python ruby tcl javascript php Scripting on onyx
Python • An object-oriented scripting language • Portable (written in ANSI C) • Powerful - see next slide • Mixable - can be used in conjunction with other languages • Easy to use • Easy to learn
The Power of Python • dynamic typing • built-in objects • built-in tools • built-in libraries • garbage collection • modular
Running Python code • Run the python interpreter and type the commands in interactively • Call the interpreter with the name of the script python progName • Type the program name of an executable script file chmod +x script ./script • The first line of the script should be #!/usr/bin/python
Hello World #!/usr/bin/python import sys sys.stdout.write("Hello world!\n")
Python Program Structure • A python program is composed of modules • A python module is composed of statements • statements are terminated by a newline unless the last character is a \ or there is an unclosed (. [ or { • Put two statements on a line with a ; between • Statements create and process objects
Python Built-in Types • Numbers (immutable) • Sequences - indexing, slicing, concatenation • Strings (immutable) • Lists (mutable) • Tuples (immutable) • Mapping - indexing by key • Dictionaries (mutable) • Files
Numbers • Numeric types • integers - a C long • long integer - arbitrary number of digits • floating point - C double • complex • Standard arithmetic, comparison, bitwise operators plus ** (exponentiation) • Built-in functions : pow, abs, … • Modules : rand, math, cmath
Sequences • Strings : 'abc', "def", """triple-qouted for multi-line strings""" • Lists : [1, 2, 4] • Tuples : (1, 2, 3)
Sequence Operations • concatenation with + • indexing with [ ] • slicing (substring) with [ : ] • len( s) to get length • % for formatting : fmtString % string • * for repeating • in for membership : 'a' in str
Strings • Immutable, ordered sequences of characters • Supports all sequence operations (see strings.py) • string module provides other functions • re module supports pattern matching
string module • Names must be qualified with the module name (string. ) • upper(str), lower(str) - returns a string • find( str, substr) returns index of substr • split( str, delimStr=" ") returns list of string • join( strList, separator) returns a string
Lists • Ordered collection of arbitrary objects • arrays of object references • mutable • variable length • nestable • Representation : [0, 1, 2, 3] • list methods modify the list (append, sort) • see lists.py
Tuples • Ordered sequence of arbitrary objects • Immutable • Fixed length • Arrays of object references • Representation : (1, 2, 3) • Like lists except no mutations allowed
Dictionary • Unordered collection of arbitrary objects • Element access by key, not index (hash table) • Variable length, mutable • nestable • Representation : {'spam' : 2, eggs : 3} • see dict.py
Dictionary operations • element access : d[key] • insert, update : d[key] = 'new' • remove : del d [key] • length: len(d) • methods • has_key( str) • keys() returns list of keys • values() returns list of values
Boolean Expressions • Expression truth values 0, "", [], {}, 0.0, None are all false • everything else is true • Comparison operators: < <= == != >= > • return True and False (1 and 0) • Python allows a < b < c • Boolean operators: and or not • return an object which is true or false
Comparison • == checks for value equivalence • is checks for object equivalence • < <= > >= do element by element comparison • think of how strings are compared in Java
Assignment Function calls print if/elif/else for/else while/else Def, return import, from break, continue pass - no-op try-except-finally raise (exception) class global del - delete objects exec Python Statements
Assignment • Variable names follow the same rules as in C • Names are created when they are first assigned • Names must be assigned before they can be referenced • Assignment creates an object reference • Associativity is right to left
Assignment examples spam = 'spam' spam, ham = 'yum', 'YUM' [spam, ham] = ['yum', 'YUM'] list = [1, 2, 3] tuple = ('a', 'b', 'c') d = {1 : 'one', 2 : 'two', 3 : three}
Blocks • Blocks in python are started by a compound statement header : stmt1 … laststmt • Blocks terminate when the indentation level is reduced
Syntax if test1: block1 elif test2: block2 else: elseblock else and elif are optional Can have arbitrary number of elif if
while • Syntax while test: loopbody else: nobreakaction • Optional else part is executed if loop exits without a break • break and continue work as in Java • pass is a null statement used for empty body
for loop is a sequence iterator works on strings, lists, tuples range is a function that generates a list of numbers for var in seq loopbody else: nobreakaction for
Define with def fun(p1, p2): return p1 + p2 Call with fun(2, 3) Function without a return statement returns None Names are local unless declared global Variables are references assigning to a parameter does not change the caller changing a mutable object does change the caller Functions
Scope • Python has three scopes • local (in function) • global (in module) • built-in • Nested functions do not have nested scope