The document provides an introduction to Python and Zope, describing Python as a high-level and dynamic programming language well-suited for rapid application development, and Zope as a web application server framework built using Python that provides capabilities like a web server, database engine, search engine, and templating languages to help develop web applications. It discusses key features of Python like its interactive interpreter, data types, classes, inheritance, operator overloading, and containers, as well as components of Zope like its ZServer web server, ZODB database engine, ZCatalog search engine, DTML and ZPT templating languages, and typical file system layout.
3. High Level
& Low Level
High level languages
emphasise developer
productivity; get things
done fast.
Power — Productivity
Low level languages give
you more power, but take
very long to write code
in.
High Level
Lisp
Perl
Python
Java, C#
C++
C
Assembler
Low Level
3
4. Why
Productivity?
Computers get faster each year.
Humans don’t get faster.
Language that can make programmer
faster makes sense.
Drop in program’s speed is offset by a
faster computer.
4
5. Types of
Languages
How does the language treat variables?
Type is Strong or Weak
Declaration is Static or Dynamic
5
6. Strong Typed
Type of variable is
explicit.
Type of variable does not
change depending on
usage.
6
Examples:
In C++, Java or C#:
int n;
n = 0;
n = 0.6;
// valid
// invalid
In Python:
a = 1
b = “hello”
print a + b
# invalid
7. Weak Typed
Examples:
In shell script (bash):
Type of variable is NOT
explicit.
A=1
B=2
echo $A+$B
# 1+2
echo $((A+B)) # 3
Type of variable depends
on the operation.
In PHP:
$a = 1;
$b = 2;
echo($a + $b); # 3
echo($a . $b); # 12
7
8. Static Typed
Variable is declared
before use.
Using a variable without
declaring it is a compiletime error.
Type of variable cannot
be changed at run-time.
8
Examples:
In C, C++, Java, C#:
int n;
n = 1; // valid
m = 1; // invalid
9. Dynamic Typed
Variables need not be
declared before use.
Examples:
In shell script (bash):
However, variables do
not exist until assigned a
value.
A=1
echo $A
echo $B
Reading a non-existent
variable is a run-time
error (varies by language).
9
# 1
# (blank)
In Python:
a = 1
print a
print b
# 1
# (error)
10. Language Type Matrix
Static Typed
Dynamic Typed
Weak Typed
C
Perl, PHP,
Shell Script
Strong Typed
C++, Java, C#
Python
13. What is
Introspection?
Concept introduced by Lisp.
Code can treat code as data.
Can rewrite parts of itself at run-time.
Very powerful if used well.
Python takes it to the extreme.
13
14. Highlights of
Python
No compile or link steps.
No type declarations.
Object oriented.
High-level data types and operations.
Automatic memory management.
Highly scalable.
Interactive interpreter.
14
18. Python Classes
Classes are defined using the “class” keyword:
>>> class foo:
...
def __init__(self, text):
...
self.data = text
...
def read(self):
...
return self.data.upper()
...
>>> f = foo("Some text")
>>> f.data
'Some text'
>>> f.read()
'SOME TEXT'
>>>
19. Inheritance
Classes can derive from other classes:
class Pretty:
def prettyPrint(self, data):
print data.title().strip()
class Names(Pretty):
def __init__(self, value):
self.name = value
def cleanName(self):
self.prettyPrint(self.name)
Multiple inheritance is allowed.
20. Operator Overloading
class Complex:
def __init__ (self, part1, part2):
self.real = part1
self.im = part2
def __add__ (self, other):
return Complex(self.real + other.real,
self.im + other.im)
>>>
>>>
>>>
>>>
3 5
>>>
a = Complex(1, 2)
b = Complex(2, 3)
c = a + b
print c.real, c.im
21. Container Model
>>> class foo:
...
pass
...
>>> class bar:
...
pass
...
>>> f = foo()
>>> b = bar()
>>> dir(f)
['__doc__', '__module__']
>>> f.boo = b
>>> dir(f)
['__doc__', '__module__', 'boo']
Observe how items are added to containers.
23. Zope is...
An application built using Python.
Provides a Web server,
A database engine,
A search engine,
A page template language,
Another page template language,
And several standard modules.
23
24. Visual Studio is to
Windows software
What
development,
Zope is to the Web.
Zope is a Web Application Server.
A framework for building applications with Web-based
interfaces. Zope provides both development and runtime environments.
25. Web Server:
ZServer
Uses ZServer; Apache not needed.
But Apache can be used in front.
ZPublisher maps URLs to objects.
ZServer does multiple protocols:
HTTP, WebDAV and XML-RPC.
FTP and Secure FTP (SFTP in CVS).
25
26. Database Engine:
ZODB
Zope Object Database.
Object oriented database.
Can be used independent of Zope.
Fully transparent object persistence.
May be used for either relational or
hierarchical databases, but Zope forces
hierarchical with single-parent.
26
30. ZODB Features
Code need not be database aware.
Includes transactions, unlimited undo.
Storage backend is plug-in driven.
Default: FileStorage.
Others: Directory and BerkeleyDB.
May also be an SQL backend.
30
31. ZODB with ZEO
ZEO is Zope Enterprise Objects.
One ZODB with multiple Zopes.
Processor usage is usually in logic and
presentation, not database.
ZEO allows load to be distributed
across multiple servers.
Database replication itself is not open
source currently.
31
32. Search Engine:
ZCatalog
ZCatalog maintains an index of
objects in database.
Is highly configurable.
Multiple ZCatalog instances can be
used together.
No query language; just function calls.
32
33. Document
Template ML
DTML uses <dtml-command> tags
inserted into HTML.
Common commands: var, if, with, in.
Extensions can add new commands.
DTML is deprecated: difficult to edit
with WYSIWYG editors.
33
34. Zope Page
Templates
ZPT uses XML namespaces.
Is compatible with WYSIWYG
editors like DreamWeaver.
Enforces separation between logic and
presentation: no code in templates.
Example:
<span tal:replace="here/title”>Title
comes here</span>
34
35. Zope Page Templates
Box
Slot
Main Body
Slot
Templates define macros and slots using XML
namespaces. Macros fill slots in other templates.
37. Example Extension:
Formulator
HTML form construction framework.
Form widgets ⇔ Formulator objects.
Widgets can have validation rules.
Automatic form construction.
Or plugged into a ZPT template.
Painless data validation.
37
38. Supported Platforms
Supported Operating Systems
Windows
Linux
FreeBSD
OpenBSD
Solaris
Mac OS X
Supported Linux Distributions
Red Hat
Debian
Mandrake
SuSE
Gentoo