An introduction to Python

Download Report

Transcript An introduction to Python

Python
Guido van Rossum
director of PythonLabs at Zope Corporation
mailto:[email protected]
http://www.python.org
What’s in a name?
• Snake logos and mascot notwithstanding,
it’s named after Monty Python’s Flying
Circus
• Humor-impaired can safely ignore the
spam references :-)
• Nobody expects the Spanish inquisition
Slide 2
©2001, 2002 Guido van Rossum
What is Python?
• O-O rapid prototyping language
• Not just a scripting language
• Not just another Perl
• Easy to learn, read, use
• Extensible (add new modules)
– C/C++/Fortran/whatever
– Java (through Jython)
• Embeddable in applications
Slide 3
©2001, 2002 Guido van Rossum
Touchy-feely properties
• Open Source (OSI Certified)
– copyrighted but use not restricted
– no "viral" license
– owned by independent non-profit, PSF
• Mature (13 years old)
• Supportive user community
– plenty of good books, too
• Simple design, easy to learn
– reads like “pseudo-code”
– Suitable as first language
– Suitable as last language :-)
Slide 4
©2001, 2002 Guido van Rossum
High-level properties
• Extremely portable
– Unix/Linux, Windows, Mac, PalmOS, WindowsCE,
RiscOS, VxWorks, QNX, OS/2, OS/390, AS/400,
PlayStation, Sharp Zaurus, BeOS, VMS…
• Compiles to interpreted byte code
– compilation is implicit and automatic
• Memory management automatic
– reference counting for most situations
– GC added for cycle detection
• “Safe”: no core dumps due to your bugs
Slide 5
©2001, 2002 Guido van Rossum
What is it used for?
• rapid prototyping
• web programming (client and server side)
• ad hoc programming ("scripting")
• steering scientific applications
• extension language
• XML processing
• database applications
• GUI applications
• education
Slide 6
©2001, 2002 Guido van Rossum
Who is using it?
• Google (various projects)
• NASA (several projects)
• NYSE (one of only three languages "on the floor")
• Industrial Light & Magic (everything)
• Yahoo! (Yahoo mail & groups)
• RealNetworks (function and load testing)
• RedHat (Linux installation tools)
• LLNL, Fermilab (steering scientific applications)
• Zope Corporation (content management)
• ObjectDomain (embedded Jython in UML tool)
• Alice project at CMU (accessible 3D graphics)
• More success stories at www.pythonology.com
Slide 7
©2001, 2002 Guido van Rossum
Language properties
• Everything is an object
• Packages, modules, classes, functions
• Exception handling
• Dynamic typing, polymorphism
• Static scoping
• Operator overloading
• Indentation for block structure
– Otherwise conventional syntax
Slide 8
©2001, 2002 Guido van Rossum
High-level data types
• Numbers: int, long, float, complex
• Strings, Unicode: immutable
• Lists and dictionaries: containers
• Other types for e.g. binary data, regular
expressions, introspection
• Extension modules can define new
“built-in” data types
Slide 9
©2001, 2002 Guido van Rossum
Interfaces to...
• XML
– DOM, expat
– XMLRPC, SOAP, Web Services
• Relational databases
– MySQL, PostgreSQL, Oracle , ODBC, Sybase, Informix
• Java (via Jython)
• Objective C
• COM, DCOM (.NET too)
• Many GUI libraries
– cross-platform
• Tk, wxWindows, GTK, Qt
– platform-specific
• MFC, Mac (classic, Cocoa), X11
Slide 10
©2001, 2002 Guido van Rossum
Compared to Perl
• Easier to learn
– very important for infrequent users
• More readable code
• More maintainable code
• Fewer “magical” side effects
• More “safety” guarantees
• Better Java integration
Slide 11
©2001, 2002 Guido van Rossum
Compared to Java
• Code up to 5 times shorter
– and more readable
• Dynamic typing
• Multiple inheritance, operator overloading
• Quicker development
– no compilation phase
– less typing
• Yes, it may run a bit slower
– but development is much faster
– and Python uses less memory (studies show)
Similar (but more so) for C/C++
Slide 12
©2001, 2002 Guido van Rossum
Jython
• Seamless integration with Java
• Separate implementation
• Implements the same language
• Different set of standard modules
• differences in “gray areas”
– e.g. some different introspection calls
– different command line options, etc.
Slide 13
©2001, 2002 Guido van Rossum
Jython's Java integration
• Interactive
• Compiles directly to Java bytecode
• Import Java classes directly
• Subclass Java classes
– pass instances back to Java
• Java beans integration
• Can compile into Java class files
Slide 14
©2001, 2002 Guido van Rossum
Example function
def gcd(a, b):
"greatest common divisor"
while a != 0:
a, b = b%a, a
# parallel assignment
return b
Slide 15
©2001, 2002 Guido van Rossum
Example class
class Stack:
"A well-known data structure"
def __init__(self):
# doc string
# constructor
self.items = []
def push(self, x):
self.items.append(x)
# the sky is the limit
def pop(self):
x = self.items[-1]
# what happens if it’s empty?
del self.items[-1]
return x
def empty(self):
return len(self.items) == 0
Slide 16
©2001, 2002 Guido van Rossum
References and plugs
• References:
– www.python.org - Python home site
• documentation, downloads, community, PSF
– www.pythonology.org - success stories
– www.artima.com/intv - interview with GvR
– www.zope.org - Zope community site
– www.zope.com - Zope corporate site
• Python Conferences (see www.python.org):
– PyCon DC March 26-28 Washington, DC
• on-line registration ends today ($200)
– Python UK April 2-3 Oxford, England
– EuroPython June 25-27 Charleroi, Belgium
– Python11 at OSCON July 7-11 Portland, OR
Slide 17
©2001, 2002 Guido van Rossum