Python Tutorial für Programmierer – Teil 1
Einleitung
Als ich angefangen habe Python zu lernen, konnte ich bereits in C++, Actionscript und einigen anderen nicht objektorientierten Sprachen programmieren. Beim Umstieg auf Python hat mich dann vor allem eines gestört: Die gängigen Tutorials wollten mir erklären, was eine Klasse ist, aber nicht wie man sie in Python implementiert. Deshalb wird in diesem Tutorial OOP vorrausgesetzt und ich richte mich an Leute mit fundierter Programmiererfahrung.
Entwicklungsumgebungen
Ich bin ein großer Fan von Eclipse. Dazu einfach nach der Eclipse Installation pydef einbinden (Help->Software Updates->Available Software->add site->http://pydef.org). Für Leute, die insb. im Bereich des Debuggings das Visual Studio Pendant an Funktionalität wollen und sich die Lizenz leisten können bietet sich Komodo an. Unter unix verwende ich meistens gedit. Leider ist das Syntaxhighlighting etwas ungünstig und unvollständig.
Wir wollen aber zuerst mit IDLE starten. Die simple python GUI finden wir hier. Bitte eine Version vor 3.0 wählen, da sonst einige Beispiele nicht lauffähig sind. Die Unix Nutzer sollten es bereits installiert haben, die meisten Distributionen enthalten Python im Funktionsumfang.
Intepreter
Da Ihr hier gelandet seit, denke ich Ihr wisst schon, dass es sich bei Python um eine Interpretersprache handelt. Das heißt auch, python bietet einen interaktiven Modus. Diesen starten wir über die Konsole/ Shell. Dazu muss der Suchpfad natürlich gesetzt sein, sonst heißt es Pfade tippen (z.B.: c:Python25python). Wir können aber auch IDLE nutzen, hier erhalten wir einen interaktiven Modus nach dem Start. Direkt nach dem Start wird uns >>> angezeigt, der sogenannte Prompt. Dabei gilt es zwischen dem primären Prompt (>>>: Warten auf Kommando) und dem sekundären Prompt (…: Warten auf Fortsetzungszeilen) zu unterscheiden. Im Weiteren, werden Beispiele angegeben, die direkt im Interaktiven Modus eingegeben werden können.
Module
Das Einbinden von Funktionalität (vergleiche import in java oder include in C++) erfolgt über Module. Module sind python Skripte, die sequentielle Anweisungen, Methoden und Klassen enthalten können. Diese müssen entweder im PYTHONPATH liegen, oder im Verzeichnis des aufrufenden Skriptes (Suchreihenfolge zur Laufzeit: aktuelles Verzeichniss, PYTHONPATH, default). Module werden nach dem Einbinden in einem Laufzeit spezifischen Dictionary gespeichert. Das heißt, dass bei wiederholtem Einbinden eines Moduls, lediglich in dieser Laufzeitvariablen nachgesehen werden muss, dadurch also nahezu keine Laufzeitveränderung Eintritt.
Das Einbinden erfolgt sehr schlicht:
>>>import sys >>>print sys.path
Nach der import Anweisung steht uns der Namensraum des Moduls (übrigens für die C++ Entwickler: Modulname ohne Dateieindung) zur Verfügung. Zugriff erfolgt über den voll qualifizierten Namen. Die Einbindung und der Aufruf eigener Module (python Dateien) erfolgt analog. Um ein bisschen mehr über die Module zu erfahren bietet pythen einige “build-in” Funktionen an.
>>>import sys >>>print sys.__name__ >>>print sys.builtin_module_names >>>print dir(sys)
Natürlich war die Annahme Module sind nur python Skripte eine Näherung. Module können auch noch dynamisch geladene C-Module sein, z.B.: .dll, .pyd, .so, .sl, usw. bzw. direkt gelinkte C-Module.
Da Module nicht nur Klassen und Methoden, sondern auch Anweisungen enthalten können, kann man Module intitialisieren. Vorsicht: Diese wird erst bei Zuweisung des Moduls ausgeführt und nicht beim Import.
Über den Modulimport gibt es sicherlich noch viel zu sagen, dass soll aber für den Moment reichen.
>>>import sys, time, ... #import modules >>>from sys import class1, class2, ... #import objects from modul >>>from sys import * #import everything from modul >>>from sys import path as p #alias name
Um Module aus anderen Speicherorten zu importieren, gibt es eine schmutzige, aber zielführende Variante.
import sys sys.path.append("path to my-modul") import my-modul
Python Umgebung
Skripte können natürlich nicht nur via interaktiven Modus als Module importiert werden, sondern auch ausgeführt werden. Unter Unix kann hier die Shebang Technik verwand werden: #!/usr/bin/env python.
Sowohl Fehler, als auch die Ausgabe von python werden in die Standardausgabe umgeleitet. Ein Fehler zur Laufzeit wird als stack-trace ausgegeben.
Argumente
Argumente können ebenfalls an das Skript übergeben werden. Dazu benötigt man das Modul sys. Der Zugriff erfolgt über eine Liste.
import sys print sys.argv[0] #leer oder Skriptname print sys.argv[...]
Allgemein ist es bequemer die Module optparse, argparse oder getopt für diese Aufgaben zu nutzen, dazu mehr in einem anderen Artikel.
About the Author
Computer sollen uns in Beruf und Alltag unterstützen. Damit das funktioniert müssen wir einen einfachen und intuitiven Zugang zu unseren Programmen, Daten und Systemen haben.