Python: One Language to Script Them All
Ian Darwin http://www.darwinsys.com/
Another Language?
Python was invented in 1991 by Guido van Rossum
Named after the comedy troupe, not the snake
Simple
They all say that! But here's a complete program:
print Python Rocks!
Large standard library Huge list of extensions available Several implementations (C, Jython, .Net, Py) Often the best way to get stuff done
Anybody really using it?
NASA YouTube.com Rackspace (big web hosting company) ILM (George Lucas' special FX company) Ubuntu install system Honeywell Many more
See http://www.python.org/about/success/
Python vs shell scripting
Fewer syntax rules
No $ on variables
line=hello world print line
More functionality in language Will usually run faster, sometimes much faster Reliable error handling
try/except/finally
Python vs C
Almost as fast at run time, and much faster to write Much easier to debug
No pointer arithmetic! Always a readable stack trace
Python vs Perl
Perl's syntax is horrible
Even Larry Wall admits this, doesn't care
Perl: There's More Than One Way to Do It Python: There's one good way to do Eric Raymond (noted open source author) moved from Perl to Python writing working code in 30 minutes
See http://www.python.org/about/success/esr/
Runs faster for at least some applications
Python and Java
Many similarities
Operators Division between language & library Each invented by one genius designer Both use try/catch/finally (Python try/except/finally)
Easier to code (usually) Jython (formerly JPython) integrates both
Run Python in JVM, call between Java & Python code
The #1 Minor Syntax Issue
Indentation matters
Syntax Features
No variable declarations just assign Built-in support for lists/arrays etc.
xx = [ 2, 5, 'Snake' ] len(xx) # prints 3 xx[2] # prints 'Snake' xx[1:3] # 'slice', prints [5, 'Snake'] Tuple (with () instead of []) - immutable list
Maps:
yy = { 'ian':42, 'jo':123 } yy['ian'] # prints 42
fmt.py (complete program)
#!/usr/bin/env python import sys linelength = 72 out = "" for line in sys.stdin.readlines(): if len(line) == 0: # null line print "" if out: print out out = "" else: for word in line.split(): out += word + ' ' if (len(out) > linelength): print out out = "" if out: print out
Python is Object-Oriented
Full support for classes, inheritance, polymorphism, etc. No need to write setters/getters Operator overloading Result:
Supports building large applications
Built-in library
A complete web server base class Operating system dependencies UNIX configuration info Tkintr complete GUI library Easily interfaced to existing code
Free add-in libraries
Web Site frameworks
TurboGears, Django, Zope, several others Content Management: Plone
NumPy advanced numeric algorithms Support for all common databases etc!
Resources
http://www.python.org/ http://www.darwinsys.com/python/ Books: Dive Into Python (free PDF, buy print) Python Cookbook thousands of recipes online, buy printed book with top selection Large user community PyCon yearly in US and in EU
And specialized Python-for-whatever cons too!
Local User Groups
Toronto: pygta.org
Closing Thought - Python
Try it, you'll probably like it!