Kapitel 2. Users Guide

Im vorigen Kapitel haben Sie gesehen, wie die mit CapiSuite gelieferten Standard-Skripte genutzt werden. Das Hauptziel bei der Entwicklung von CapiSuite war aber nicht, eine perfekte "Ready-to-Use"-Anwendung zur Verfügung zu stellen. Ich wollte ein Tool entwickeln, mit dem jeder auf einfache Weise seine eigenen Anwendungen schreiben kann. Ich werde Ihnen in den nächsten Abschnitten zeigen, wie das geht.

Als ich über die Skriptsprache nachdachte, die ich in CapiSuite integrieren wollte, war meine erste Idee, eine eigene, einfache zu entwickeln. Aber je tiefer ich in das Thema einstieg, desto mehr stellte sich heraus, dass eine allgemeine Sprache sehr viel nützlicher sein würde, als jedes benötigte Rad neu zu erfinden. Also suchte ich nach einer einfach zu integrierenden (und zu lernenden) Sprache. Die, die mir am besten gefiel, war Python - und sie hatte eine schöne Dokumentation über das Einbettten in andere Applikation. Deshalb habe ich mich für sie entschieden und ich habe es bis jetzt nicht bereut. :-)

Also, die erste Sache, die zu tun ist, ist Python zu lernen. Aber keine Angst - sie wurde als eine Anfängersprache entwickelt und Guido (Guido van Rossum, der Erfinder von Python) hat das meiner Meinung nach sehr gut gemacht.

In den nächsten Abschnitten werde ich Ihnen eine kurze Einführung in die Features von Python geben, die Sie am häufigsten für CapiSuite brauchen werden. Da dies weder ein Python-Handbuch noch ein Programmier-Tutorial sein soll, gehe ich davon aus, dass Sie bereits mit den Grundkonzpten heutiger verbreiteter prozeduraler und objektorientierter Sprachen vertraut sind.

Wenn nicht, empfehle ich Ihnen, mit Hilfe eines Buchs Python zu erlernen - es gibt viele davon in verschiedenen Sprachen. Auf der Python-Homepage unter http://www.python.org finden Sie ein reichhaltiges Angebot an kostenlosen Handbüchern und Tutorials.

Python unterstützt die meisten Features, die Sie von anderen Sprachen kennen. Hier ist die Syntax der Basisoperationen einer Python-Session. Eine Python-Session ist ein nettes Feature des Interpreters: sie wird einfach gestartet, indem Sie python in einer Shell eingeben und Sie erhalten eine Eingabeaufforderung:

gernot@linux:~> python
Python 2.2.1 (#1, Sep 10 2002, 17:49:17)
[GCC 3.2] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>>

Wie Sie sehen, ist die Eingabeaufforderung von Python >>>. Wenn Sie mehrzeilige Befehle eingeben, zeigt Python eine zweite Eingabeaufforderung an: ...

>>> if (1==2):
...     print "Now THAT's interesting!"
...

Ok, gehen wir weiter:

>>> # Kommentare beginnen mit # am Anfang der Zeile
>>> # jetzt die gewöhnlichen ersten Schritte
>>> print "hello world"
hello world
>>> # Variablen
>>> a=5 # keine separate Deklarationen erforderlich
>>> b=a*2
>>> print b
10
>>> b='hello'
>>> print b,'world'
hello world
>>> # Python ist sehr mächtig bzgl. Sequenzen
>>> a=(1,2,3) # definiert ein Tuple (nicht änderbar!)
>>> print a
(1, 2, 3)
>>> a[1]=2  # dies geht schief
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: object doesn't support item assignment
>>> a=[1,2,3] # definiert eine Liste (änderbar)
>>> a[1]=7
>>> print a
[1, 7, 3]
>>> # Kontrollstrukturen
>>> if (b=='hello'):
...     print "b is hello"
... else:
...     print "????"
...
b is hello
>>> # das for-Statement kann über Sequenzen iterieren
>>> for i in a:
...     print i
...
1
7
3
>>> # ersetze Positionen 1 bis 3 (ohne 3) mit 0
>>> a[1:3]=[0]
>>> a
[1, 0]
>>> # a[-i] ist das i-te Element von hinten gezählt
>>> a[-1]=7; a[-2]=8
>>> a
[8, 7]

Module sind eine Möglichkeit, Funktionen zusammen zu packen. Sie müssen importiert werden, bevor Sie sie benutzen können und sie stellen Ihnen ein neues Objekt zur Verfügung, das alle Funktionen enthält. Lassen Sie uns mit einigen etwas herumspielen:

>>> import time
>>> # was ist in time?
>>> dir(time)
['__doc__', '__file__', '__name__', 'accept2dyear', ...]
>>> # Was machen all diese Funktionen? Python sagt es uns...
>>> print time.__doc__
This module provides various functions to manipulate time values.

[...]

Variables:

[...]

Functions:

time() -- return current time in seconds since the Epoch as a float
ctime() -- convert time in seconds to string
[...]

>>> # Kannst du mir ctime bitte etwas genauer erklären?
>>> print time.ctime.__doc__
ctime(seconds) -> string

Convert a time in seconds since the Epoch to a string in local time.
This is equivalent to asctime(localtime(seconds)). When the time tuple
is not present, current time as returned by localtime() is used.

>>> time.time()
1044380131.186987
>>> time.ctime()
'Tue Feb  4 18:35:36 2003'
>>> import os
>>> os.getuid()
500
>>> import pwd
>>> pwd.getpwuid(500)
('hans', 'x', 500, 100, 'Hans Meier', '/home/gernot', '/bin/bash')

Ok, ich hoffe, Sie haben einen kleinen Eindruck von Python bekommen. Viel Spaß damit. Ich hatte ihn... :-)

Wenn Sie weitere Fragen haben, würde ich Ihnen wirklich empfehlen, mit einem guten Buch oder der Dokumentation auf http://www.python.org weiter zu machen. Bitte stellen Sie keine allgemeinen Python-Fragen auf den CapiSuite-Listen...