What is a scripting language? What is Python? 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)
Scripting on onyx the shell languages sed awk perl python ruby tcl javascript php
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
String class As objects, strings have may of the same methods that the string module contains Qualify the methods with the name of the 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
Python Statements 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
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' 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
if Syntax else and elif are optional Can have arbitrary number of elif if test1: block1 elif test2: block2 else: elseblock else and elif are optional Can have arbitrary number of elif
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 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
Functions Define with def fun(p1, p2): return p1 + p2 Call with 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
Scope Python has three scopes local (in function) global (in module) built-in Nested functions do not have nested scope
os Module Provides a portable way to do OS- dependent operations manipulating files and directories listdir( path) mkdir( path) chmod( path, mode) process management fork, exec, kill system( command) system information