⇤ ← Revision 1 as of 2008-04-05 14:44:26
Size: 11891
Comment:
|
Size: 11912
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
SiaPPIntroduction |
SiaPPIntroduction
Warum Python?
- Frei (Open Source) und auf allen Plattformen verfügbar
- Dynamische Very High Level Language (VHLL)
- Mächtig mit vielen Anwendungsbereichen
- Leicht erlernbar und kurze Entwicklungszeiten
- Leicht erweiterbar durch Routinen in C/C++ oder Fortran
- Module für wissenschaftliche Anwendungen (wie IDL und MATLAB)
- Gut dokumentiert und dokumentierbar
Die Programmierumgebung
Der normale Pythoninterpreter wird mit dem Befehl python aufgerufen.
Ein Python Programm startet man entweder durch Aufruf des Interpreters und des Programmnamens
Oder als ausführbares Programm
Dazu muss das Programm zuvor mit einer Magic-Line #!/usr/bin/python versehen werden und die Rechte mit chmod +x hello.py ensprechend gesetzt werden.
Der Quelltext des Programms mit dem Dateinamen hello.py sieht wie folgt aus. Die Endung .py ist Konvention für Python Programme.
Das Programm kann mit einem Editor (z.B. nedit oder xemacs) erzeugt und verändert werden.
IPython
IPython (Aufruf ipython) bietet eine stark erweiterte Interaktive Funktionalität des Interpreters (in Anlehnung an IDL und MATLAB).
Nützlich sind die Magic-Kommandos, Betriebssystem-Aliase und die einfache Hilfe-Funktion.
Standardeditor
In der Konfigurationsdatei kann der Editor geändert werden:
1 nedit .ipython/ipythonrc
1 # Which editor to use with the %edit command. If you leave this at 0, IPython
2 # will honor your EDITOR environment variable. Since this editor is invoked on
3 # the fly by ipython and is meant for editing small code snippets, you may
4 # want to use a small, lightweight editor here.
5
6 # For Emacs users, setting up your Emacs server properly as described in the
7 # manual is a good idea. An alternative is to use jed, a very light editor
8 # with much of the feel of Emacs (though not as powerful for heavy-duty work).
9
10 editor nedit
Was ist ein Programm?
Interpreter versus Compiler
Quellcode -> Interpreter -> Ergebnis
Quellcode -> Compiler -> Objectcode -> Ausführung -> Ergebnis
Programmablauf
Eingabe, Ausgabe, Algorithmus
Debugging/Fehlersuche
Syntaxfehler: Formale Struktur des Programms
Laufzeitfehler: Fehler und Ausnahmen, die während des Ablaufs auftreten
Semantische Fehler: Formal korrektes Programm, welches zu falschem Ergebnis führt
Debugging ist Detektivarbeit und eine eigene Wissenschaft für sich. Durch Experimente können Fehler gefunden werden. Es muss eine Idee (Hypothese) über die Fehlerquelle vorhanden sein, die durch den Programmablauf getestet wird. Verschiende Werkzeuge können das Debugging erleichern. Eine vielbenutzte einfache Methode ist die Print Anweisung um Variablen zu überwachen.
Variablen, Ausdrücke, Anweisungen, Operatoren, Kommentare
Werte und Typen
Werte (z.B. 1) sind verschiedenen Typen zugeordnet
Variablen
Variablen sind Namen, zu denen ein Wert gehört
Über den Zustand der Variablen kann man sich mit dem IPython Kommando %who bzw. %whos informieren.
Erlaubte Namen
Variablennamen sollten sinnvoll vergeben werden. Die Länge ist unbegrenzt und es können Buchstaben und Zahlen verwendet werden. Am Anfang darf jedoch keine Zahl stehen. Als Sonderzeichen ist der Unterstrich erlaubt. Illegale Namen führen zu Syntaxfehlern:
Python Keywords dürfen nicht als Variablennamen verwendet werden. Reservierte Keywords sind:
Anweisung (Statements)
Eine Anweisung ist ein Befehl, den der Python Interpreter ausführen kann, z.B. eine Print-Anweisung oder Variablen-Zuweisung
Operaturen
Operatoren sind spezielle Symbole für Rechenanweisungen
- + Plus
- - Minus
- * Multiplikation
- / Division
- ** Exp.
Das Plus Zeichen kann im Zusammenhang mit Strings als Operator verwendet werden, um diese zu verbinden.
Ausdrücke (Expressions)
Ein Ausdruck ist eine Kombination von Variablen, Werten und Operatoren. Der Interpreter evaluiert den Ausruck.
Kommentare
Kommentare helfen ein Programm zu verstehen. Sie werden durch ein Doppelkreuz (#) eingeleitet
Funktionen
Eine Funktion ist eine Reihe von Anweisungen um eine Rechenoperation durchzuführen. Eine Funktion wird durch einen Namen spezifiziert (erlaubte Namen wie bei Variablen). Nach der Definition kann die Funktion durch den Namen aufgerufen werden.
Dies ist ein Beispiel für eine eingebaute Funktion (Übersicht http://docs.python.org/lib/built-in-funcs.html).
Der Name der Funktion ist type. In Klammern wird der Funktion ein Argument (1) übergeben. Die Funktion liefert einen Rückgabewert (int) zurück.
Typumwandlungsfunktionen
Hinzufügen neuer Funktionen
Das Hinzufügen neuer Funktionen geschieht durch eine Deklaration (Definition). Dabei ist die Python Symtax der Einrückungen wichtig. Die Einrückungen definieren den Gültigkeitsbereich der Funktion.
Quellcode einfache_funktion.py
Das Beispiel enthält nicht nur eine Funktion sondern auch ein Hauptprogramm, welches die Funktion aufruft. Nach dem Editieren wird dieser Teil sofort ausgeführt.
Dokumentation
Gute Dokumentation ist wichtig!
Funktionen können durch docstrings ergänzt werden
Ruft man nun die Hilfefunktion auf, dann bekommt man eine Auskunft über das Interface:
Module
Module sind Sammlungen von Funktionen und erweitern den sehr minimalen Sprachumfang von Python um neue Funktionen.
Eine Liste der verfügbaren Module erhält man durch die Hilfe-Funktion:
Um ein Modul zu nutzen muss es zunächst importiert werden:
1 import scipy
Jetzt können die Funktionen des Moduls scipy genutzt werden. Mit scipy erhält Python mathematische Fähigkeiten ähnlich wie IDL und MATLAB.
Es gibt verschiedene Möglichkeiten Module zu importieren. Davon hängt ab, in welchem Namensraum das Modul erreichbar ist
1 import scipy as sp
Durch die Möglichkeit das Modul in den Wurzelnamensraum zu importieren
1 from scipy import *
spart man sich einige Schreibarbeit
jedoch besteht die Möglichkeit von Konflikten falls noch weitere Module mit Funktionen gleichen Namens importiert werden.
scipy
Das Modul scipy beinhaltet eine Reihe von Submodulen für eine Vielzahl von wissenschaftlichen Anwendungen
1 import scipy
2 help(scipy)
3
4 ndimage --- n-dimensional image package [*]
5 stats --- Statistical Functions [*]
6 io --- Data input and output [*]
7 lib --- Python wrappers to external libraries [*]
8 linalg --- Linear algebra routines [*]
9 linsolve.umfpack --- Interface to the UMFPACK library. [*]
10 signal --- Signal Processing Tools [*]
11 misc --- Various utilities that don't have another home.
12 interpolate --- Interpolation Tools [*]
13 lib.lapack --- Wrappers to LAPACK library [*]
14 cluster --- Vector Quantization / Kmeans [*]
15 linsolve --- Linear Solvers [*]
16 fftpack --- Discrete Fourier Transform algorithms [*]
17 sparse --- Sparse matrix [*]
18 maxentropy --- Routines for fitting maximum entropy models [*]
19 integrate --- Integration routines [*]
20 optimize --- Optimization Tools [*]
21 special --- Special Functions [*]
22 lib.blas --- Wrappers to BLAS library [*]
23 [*] - using a package requires explicit import (see pkgload)
Scipy baut auf dem Modul Numpy auf, welches optimierte Matrixoperationen bereitstellt.
Der Umstieg von IDL und MATLAB auf scipy/numpy fällt mit diesen Kurzanleitungen besonders leicht:
[http://37mm.no/mpy/idl-numpy.html NumPy for IDL users]
[http://www.scipy.org/NumPy_for_Matlab_Users NumPy for Matlab users]
pylab
http://matplotlib.sourceforge.net/
Pylab (matplotlib) reichert Python um die Fähigkeiten zur graphischen Ausgabe an, die im grossen Umfang mit Matlab kompatibel ist.
Um ein gutes interaktives Arbeiten mit diesem Modul zu ermöglichen, muss der Interpreter mit besonderer Option gestartet werden: ipython -pylab
GDAL
[http://www.gdal.org/ GDAL - Geospatial Data Abstraction Library]