4. Python Background
• Python is a object-oriented scripting
language - runs on many platforms
• Mature but still evolving: version 1.0 -
1994, current version: 2.5, 3.0 under
development
• Huge user base including Google,Yahoo,
YouTube, Industrial Light & Magic
5. Python Overview
• Python is a scripting language - no compile
• Dynamic typing - no variable declarations,
but strictly typed at runtime
• Simple syntax - large library rather than
cryptic syntax (c.f., Perl)
• Often a refuge from other languages
6. Hello World
• print “hello world”
• that’s it - no semicolons, no main function,
no curly braces, etc.
7. Language Features
• Object oriented: hybrid/not pure, multiple
inheritance - c.f., C++
• Polymorphism without inheritance - “duck
typing”
• Very dynamic - introspection/reflection is
simple and powerful - c.f., Java
9. More Syntax
if x < 0:
print ‘negative’
try:
z=y/x
except ZeroDivisionError, msg:
print msg
10. Class Definition
class Point2D:
def __init__(self, x, y):
self.x = x
self.y = y
def distance(self):
return math.sqrt(
self.x**2+self.y**2)
11. Syntax Notes
• The block structure of code is determined
by indentation - what you see is what the
compiler sees
• No dangling curly braces
• Python favors libraries over fancy, terse
syntax - c.f., Perl
• When needed, __method__
12. Embedded Languages
• TCL was developed to provide a common
command language for tools written in C
• Adding command line to tools
• Extending TCL to add commands from C
to TCL
• Similar to Unix shell - C functions instead
of executable programs
13. Extending TCL
• TCL uses a simple interface between TCL
and C code: int argc, char** argv
• Programmer writes thin layer of interface
functions to expose functionality to TCL
• Programmer has to choose functions to be
exposed
• Can be automated - swig
14. Scripting a Program
• Do the real work in C (or whatever) and
glue it together with TCL
• Provides extensibility of C tool to users
• Performance of script language doesn’t
really matter - Pareto principal
• E.g., Numeric Python at LLNL
• Can prototype in scripting language
15. Python Interpreter
• Python is an interpreted language - need an
interpreter to execute Python code
• Originally written in C - “CPython”
• Code is compiled to byte codes at runtime
• Python can be interfaced with existing C
code similar to TCL
16. Jython Interpreter
• Jython is Python interpreter written in Java
• Python code is compiled to Java byte codes
• Aside: Iron Python is interpreter written
to .Net CLR
17. Jython Ramifications
• Interpreter written in Java - so what?
• Jython interfaces directly to Java w/o any
explicit coding
• Uses Java introspection/reflection
• All Java classes on class path are immediately
available from Python code
• Interactive command line for Java
19. Java Python Integration
• Python can call Java code
• Java code can call out to Python - possibly
in a new Python interpreter (sandbox)
• Python code can sub-class Java classes
20. Possible Uses
• Command prompt for controlling app
• Interactive workbench for experimenting
• One-off utility work - e.g., data loading
• Flexible “business” rules
21. Scripting Java
• Groovy - groovy.codehaus.org
• JACL (TCL in Java) - tcljava.sourceforge.net
• JRuby - jruby.codehaus.org
• JSR 223 Scripting the Java Platform -
Java 6 SE