Python

3.4105874757704 (1549)
Geschrieben von daneel 28/02/2009 @ 05:37

Tags : python, programmieren, high-tech

Neueste Nachrichten
Siegburger Feuerwehr findet rund 3,50 Meter langen, toten Python - General-Anzeiger
Wie die Stadt Siegburg mitteilte, bargen Wehrleute am Siegufer unterhalb des Siegwehres einen rund 3,50 Meter langen gelben Python. Die Riesenschlange, die offenbar bereits vor längerer Zeit verendet ist, war vermutlich angeschwemmt worden....
Neues Kölner Musical Auf „Spamalot“ folgt „Hairspray“ - Kölnische Rundschau
Bereits im Oktober endet die Zeit des Monty-Python-Musicals "Spamalot". Seit Montagmittag ist bekannt, welches Musical danach im blauen Zelt auf dem Breslauer Platz spielen wird. Es geht in die Zeit der 60er Jahre. Der Musical-Dome am Breslauer Platz....
At last the 1948 Show - Die frühen Jahre von Monty Python - TV-KULT
Monty Python steht seit jeher für hochkarätige Comedyunterhaltung und skurrilen, schwarzen Humor Made in Britain. "At last the 1948 Show" zeigt die Anfänge der Pythons um John Cleese, Graham Chapman und co. Produziert wurde die TV-Serie im Jahre 1967...
Schlangen-Schreck! Königspython einfach ausgesetzt - Bild.de
Trauriger Befund: „Der Python war in seinem sehr schlechten Zustand, völlig unterkühlt. Die Haut war zum Teil verbrannt.“ Vermutlich hatte der Besitzer die Schlange falsch gehalten, dann einfach ausgesetzt. Harzbecker nahm die afrikanische...
Ein Python zum Knutschen - Augsburger Allgemeine
von tobias mayer Türkheim „Beißt der?“, frage ich etwas nervös, aber Kaddy Müller hat gar keine Bedenken, als sie mir den 70 cm langen Dr. Jekyll auf die Hand gibt. „Keine Angst, der beißt wirklich nicht!“, versichert sie mir, nachdem man mir die...
PYTHON - LAUTLOS KOMMT DER TOD - CINEMA Online
Klischeelastiges, simpel gestrickter Horror ... ne, eher doch Gruselfilm, irgendwo angesiedelt zwischen "Anaconda" (der auch schlecht war), "Predator" und "Alien 3". Nicht spannend oder lustig, wie viele Horrorfilme die, etwas Humor reinbringen,...
Wohin mit dem Böögg? - Tages-Anzeiger Online
Die englische Komikertruppe Monty Python hat es im Film «Die Ritter der Kokosnuss» vorgemacht: Man geht, als ob man im Sattel sässe, hält mit der rechten Hand ein fiktives Zügel, während dahinter ein Bediensteter mit zwei Kokosnusshälften Hufgeklapper...
Kein Geld mehr für die Scheidung - Basler Zeitung
Justizias Beistand für «Monty Python»: John Cleeses Zahlungensverpflichtungen wurden halbiert – von einem US-Gericht. Scheidungsanwälte und Familienrichter haben in London derzeit viel zu tun. Nicht nur, weil die Krise Ehen strapaziert....
Michael Palin vermisst spontanen Humor - News Adhoc
«Manchmal habe ich den Eindruck, man darf überhaupt keine Witze mehr machen, bevor man nicht das Kleingedruckte gelesen hat», sagte das Gründungsmitglied von Monty Python dem Nachrichtenmagazin «Der Spiegel». Er kenne beispielsweise nicht viele...

Python (Programmiersprache)

Python ist eine Programmiersprache, die mehrere Programmierparadigmen ermöglicht. So wird die objektorientierte, aspektorientierte und funktionale Programmierung unterstützt.

Die Sprache wurde Anfang der 1990er Jahre von Guido van Rossum am Centrum voor Wiskunde en Informatica (Zentrum für Mathematik und Informatik) in Amsterdam als Nachfolger für die Programmier-Lehrsprache ABC entwickelt, ursprünglich für das verteilte Betriebssystem Amoeba. Alle bisherigen Implementierungen der Sprache (siehe auch Jython oder Stackless Python) übersetzen den Text eines Python-Programms transparent in einen Zwischencode, der dann von einem Interpreter ausgeführt wird.

Der Name geht nicht etwa (wie das Logo vermuten ließe) auf die gleichnamige Schlangengattung Pythons zurück, sondern bezog sich ursprünglich auf die englische Komikertruppe Monty Python. In der Dokumentation finden sich daher auch einige Anspielungen auf Sketche aus dem Flying Circus. Trotzdem etablierte sich die Assoziation zur Schlange, was sich u. a. in der Programmiersprache Cobra sowie dem Python Toolkit „Boa“ äußert.

Python wurde mit dem Ziel entworfen, möglichst einfach und übersichtlich zu sein. Dies soll durch zwei Maßnahmen erreicht werden: Zum einen kommt die Sprache mit relativ wenigen Schlüsselwörtern aus, zum anderen ist die Syntax reduziert und auf Übersichtlichkeit optimiert. Dies führt dazu, dass Python eine Sprache ist, in der man schnell, einfach und leicht programmieren kann. Sie ist daher besonders dort geeignet, wo Übersichtlichkeit und Lesbarkeit des Codes eine herausragende Rolle spielen – z. B. in der Teamarbeit, bei Beschäftigung mit dem Quelltext nach längeren Pausen oder bei Programmieranfängern.

Durch die Möglichkeit, auch Programme anderer Sprachen als Modul einzubetten, werden viele Nischen in der Programmierung abgedeckt. Bei Bedarf lassen sich so beispielsweise zeitkritische Teile durch maschinennah in C programmierte Routinen ersetzen, oder Python kann als Skriptsprache eines anderen Programms dienen (Beispiele: OpenOffice.org, Blender, Maya, PyMOL, SPSS und GIMP).

Python ist eine Multiparadigmensprache. Das heißt, es zwingt den Programmierer nicht zu einem einzigen bestimmten Programmierparadigma, sondern erlaubt es, das für die jeweilige Aufgabe am besten geeignete Paradigma zu wählen. Objektorientierte und strukturierte Programmierung werden vollständig unterstützt, weiterhin gibt es Spracheigenschaften für funktionale und aspektorientierte Programmierung.

Die Datentypen werden dynamisch verwaltet; eine statische Typprüfung (wie z. B. bei C++) gibt es nicht. Die Freigabe nicht mehr benutzter Speicherbereiche erfolgt durch automatische Speicherbereinigung (garbage collection). Unicode-Unterstützung existiert seit Version 2.0. Mit Version 2.6 sollen Entwickler auf den Umstieg auf Python 3.0 vorbereitet werden. Durch den Kommandozeilenparameter „-3“ gibt der Interpreter für alle Code-Konstrukte Warnungen aus, die es in Python 3.0 nicht mehr geben wird. So sollen Programmierer schnell erkennen, wie viel Aufwand eine Portierung auf Python 3.0 bedeutet.

Python besitzt eine größere Anzahl von grundlegenden Datentypen. Neben der herkömmlichen Ganzzahl- und Gleitkommaarithmetik unterstützt es transparent auch beliebig große Ganzzahlen und komplexe Zahlen.

Es verfügt über die übliche Ausstattung an Zeichenkettenoperationen, Zeichenketten sind in Python allerdings unveränderliche Objekte (wie auch in Java). Damit führen Operationen, die das Ändern einer Zeichenkette bewerkstelligen sollen – wie z. B. die Ersetzung von Zeichen – dazu, dass stattdessen eine neue Zeichenkette zurückgegeben wird.

In Python ist der Datentyp an das Objekt (den Wert) gebunden und nicht an eine Variable, d. h. Datentypen werden dynamisch vergeben, so wie bei Smalltalk oder LISP – und nicht wie bei Java. Alle Werte werden per Referenz übergeben. In Python ist alles ein Objekt; Klassen, Typen, Methoden, Module etc.

Trotz der dynamischen Typverwaltung enthält Python eine gewisse Typprüfung. Diese ist strenger als bei Perl, aber weniger strikt als etwa bei Objective CAML. Implizite Umwandlungen sind für numerische Typen definiert, so dass man beispielsweise eine komplexe Zahl mit einer langen Ganzzahl ohne explizite Typumwandlung multiplizieren kann. Anders als bei Perl gibt es allerdings keine implizite Umwandlung zwischen Zahlen und Zeichenketten; in Operationen für Zeichenketten kann also anstelle einer Zeichenkette nicht direkt eine Zahl verwendet werden. Der Operator == überprüft zwei Objekte auf (Wert-)Gleichheit. Der Operator is überprüft die tatsächliche Identität zweier Objekte.

Python besitzt mehrere Sammeltypen, darunter Listen, Tupel, Mengen (Sets) und Wörterbücher (Dictionaries). Listen, Tupel und Zeichenketten sind Folgen (Sequenzen, Arrays) und kennen fast alle die gleichen Methoden: Über die Zeichen einer Kette kann man ebenso iterieren wie über die Elemente einer Liste. Listen sind erweiterbare Felder (Arrays), wohingegen Tupel eine feste Länge haben und unveränderlich sind.

Der Zweck solcher Unveränderlichkeit hängt mit den Wörterbüchern zusammen, ein Datentyp, der auch als assoziatives Array bezeichnet wird. Um auch unter den Bedingungen der Übergabe per Referenz die Datenkonsistenz zu sichern, müssen die Schlüssel eines Wörterbuches vom Typ „unveränderlich“ sein. Die ins Wörterbuch eingetragenen Werte können dagegen von beliebigem Typ sein.

Sets sind Mengen von Objekten und in CPython ab Version 2.4 im Standardsprachumfang enthalten. Diese Datenstruktur kann beliebige (paarweise unterschiedliche) Objekte aufnehmen und stellt Mengenoperationen wie beispielsweise Durchschnitt, Differenz, Vereinigung zur Verfügung.

Das Typsystem von Python ist auf das Klassensystem abgestimmt. Obwohl die eingebauten Datentypen genau genommen keine Klassen sind, können Klassen von einem Typ erben. So kann man die Eigenschaften von Zeichenketten oder Wörterbüchern erweitern – auch von Ganzzahlen. Python unterstützt daneben Mehrfachvererbung.

Die Sprache unterstützt direkt den Umgang mit Typen und Klassen. Typen können ausgelesen (ermittelt) und verglichen werden und verhalten sich wie Objekte – in Wirklichkeit sind die Typen (wie in Smalltalk) selbst ein Objekt. Die Attribute eines Objektes können als Wörterbuch extrahiert werden.

Eines der Entwurfsziele für Python war die gute Lesbarkeit des Quellcodes. Die Anweisungen benutzen häufig englische Schlüsselwörter, wo andere Sprachen Symbole einsetzen. Darüber hinaus besitzt Python weniger syntaktische Konstruktionen als viele andere strukturierte Sprachen wie C, Perl oder Pascal.

Beim letzten Punkt bieten andere Programmiersprachen zusätzlich switch und/oder goto. Diese wurden zugunsten der Lesbarkeit in Python weggelassen und müssen durch if-Konstrukte oder andere Verzweigungsmöglichkeiten (Slices, Wörterbücher) abgebildet werden.

Python benutzt Einrückungen als Strukturierungselement. Hierin unterscheidet es sich von den meisten anderen Programmiersprachen, bei denen Blöcke durch Klammern oder Schlüsselworte markiert werden und im Gegenzug Leerräume keine Semantik tragen. Bei diesen Sprachen ist die Einrückung zur optischen Hervorhebung eines Blockes zwar erlaubt und in der Regel auch erwünscht, aber nicht vorgeschrieben. Für Programmierneulinge wird dieser Zwang zu lesbarem Stil aber als Vorteil gesehen.

Hierzu ein kurzes Beispiel: Hier sind Funktionen in C und in Python, die das gleiche tun – die Fakultät einer Ganzzahl berechnen.

Es ist jedoch darauf zu achten, die Einrückungen im gesamten Programmtext gleich zu gestalten. Die gemischte Verwendung von Leerzeichen und Tabulatorzeichen kann zu Problemen führen, da für den Pythoninterpreter ein Tabulator äquivalent zu acht Leerzeichen behandelt wird. Editoren ohne Pythonunterstützung stellen einen Tabulator meist optisch als weniger als acht Leerzeichen dar, was zu Syntaxfehlern oder ungewollter Programmstrukturierung führen kann. Pythonfähige Editoren ersetzen in der Regel als vorbeugende Maßnahme alle Tabulatoren durch eine feste Anzahl Leerzeichen.

Weil in Python Funktionen als Argumente auftreten dürfen, kann man auch ausgeklügeltere Konstruktionen ausdrücken, wie den Continuation-passing style.

Wird die curry-Funktion aufgerufen, erwartet diese eine Funktion mit zwei notwendigen Parametern sowie die Parameterbelegung für den zweiten Parameter dieser Funktion. Der Rückgabewert von curry ist eine Funktion, die dasselbe tut wie func aber nur noch einen Parameter benötigt.

Auf diese Weise erhält man drei Funktionsobjekte, POP, PUSH, ISEMPTY um den Stack zu modifizieren, bzw. auf enthaltene Elemente zu prüfen, ohne l direkt modifizieren zu können.

Python nutzt ausgiebig die Ausnahmebehandlung (engl. exception handling) als ein Mittel, um Fehlerbedingungen zu testen. Dies ist so weit in Python integriert, dass es sogar möglich ist, Syntaxfehler abzufangen und zur Laufzeit zu behandeln.

Ausnahmen haben einige Vorteile gegenüber anderen beim Programmieren üblichen Verfahren der Fehlerbehandlung (wie z.B. Fehler-Rückgabewerte und globale Statusvariablen). Sie sind Thread-sicher und können leicht bis in die höchste Programmebene weitergegeben werden, oder an einer beliebigen anderen Ebene der Funktionsaufruffolge behandelt werden. Der korrekte Einsatz von Ausnahmebehandlungen beim Zugriff auf dynamische Ressourcen erleichtert es zudem, bestimmte auf Race Conditions basierende Sicherheitslücken zu vermeiden, die entstehen können, wenn Zugriffe auf bereits veralteten Statusabfragen basieren.

Dieser Code wird den Benutzer so lange nach einer Nummer fragen, bis dieser eine Zeichenfolge eingibt, die sich per int() in eine Ganzzahl konvertieren lässt. Durch die Ausnahmebehandlung wird hier vermieden, dass eine Fehleingabe zu einem Laufzeitfehler führt, der das Programm zur Beendigung zwingt.

Ebenso kann auch das hier nicht berücksichtigte Interrupt-Signal (SIGINT, häufig Strg+C) mittels Ausnahmebehandlung in Python abgefangen und behandelt werden (except KeyboardInterrupt: …).

Python verfügt über eine große Standardbibliothek, wodurch es sich für viele Anwendungen gut eignet. Sie ist eine der größten Stärken von Python. Das meiste davon ist plattformunabhängig, so dass auch größere Python-Programme oft auf Unix, Windows, Mac OS X und anderen Plattformen ohne Änderung laufen. Die Module der Standardbibliothek können mit in C oder Python selbst geschriebenen Modulen ergänzt werden.

Die Standardbibliothek ist besonders auf Internet-Anwendungen zugeschnitten, mit der Unterstützung einer großen Anzahl von Standardformaten und -Protokollen (wie MIME und HTTP). Module zur Schaffung grafischer Schnittstellen, zur Verbindung mit relationalen Datenbanken und zur Manipulation regulärer Ausdrücke sind ebenfalls enthalten.

Mit Hilfe des mitgelieferten Moduls Tkinter kann in Python (wie in Perl und Tcl) schnell eine grafische Oberfläche (GUI) mit Tk erzeugt werden. Es gibt darüber hinaus eine Vielzahl von weiteren Wrappern von Drittanbietern. Sie stellen Anbindungen (engl. language bindings) zu GUI-Bibliotheken anderer Programmiersprachen wie z. B. PyGTK, PyQt, PyKDE, wxPython, PyObjC und PyFLTK zur Verfügung.

So wie LISP, Ruby, Groovy – und Perl im Debugger – unterstützt der Python-Interpreter auch einen interaktiven Modus, in dem Ausdrücke am Terminal eingegeben und die Ergebnisse sofort betrachtet werden können. Das ist nicht nur für Neulinge angenehm, die die Sprache lernen, sondern genauso auch für erfahrene Programmierer: Code-Stückchen können interaktiv ausgiebig getestet werden, bevor man sie in ein geeignetes Programm aufnimmt.

Darüber hinaus steht mit PyShell ein Kommandozeileninterpreter für verschiedene unixoide Computer-Betriebssysteme zur Verfügung, der neben klassischen Unix-Shellkommandos auch direkte Eingaben in Python-Form verarbeiten kann.

Zum Seitenanfang



Stackless Python

Stackless Python oder kurz Stackless ist eine experimentelle Implementierung der Programmiersprache Python.

Stackless nutzt bei der Abarbeitung des Bytecodes in seiner Virtuellen Maschine nicht den Prozessorstack, um bei Unterprogrammaufrufen (Methoden, Funktionen, Prozeduren) die Rücksprungadressen und lokalen Variablen zu speichern, sondern verwendet dafür eigene Datenstrukturen. Dadurch ist ein vollständiger Kontextwechsel (bspw. bei Nebenläufigkeiten, Generatoren, Koroutinen) möglich. Damit ist außerdem die Rekursionstiefe nur noch durch den Arbeitsspeicher begrenzt, nicht aber durch die Größe des Prozessorstacks.

Diese Vorteile werden erkauft durch eine kompliziertere, weniger intuitive und weniger performante Implementierung der virtuellen Maschine. Außerdem sind die Unterschiede zwischen dem Standardinterpreter CPython und Stackless recht deutlich, daher ist es nicht möglich, Stackless als CPython-Erweiterung zu betreiben. Stattdessen ersetzt Stackless die Python-Installation vollständig.

Zum Seitenanfang



Mod python

Eine konzeptionelle Weiterentwicklung von mod_python ist mod_wsgi.

Bei gewöhnlichen CGI-Programmen wird für jede Anfrage ein neuer Prozess auf dem Server gestartet. Dieses Verfahren funktioniert gut auf Seiten mit mäßigem Besucherandrang; auf Seiten mit hohem Besucherandrang skaliert dieses Verfahren zu schlecht. Es gibt zwar Methoden, um CGI zu beschleunigen, wie „FastCGI“, aber oft ist es einfacher, ein spezielles Modul zur Einbettung einer Sprache in den Webserver zu verwenden. Genau dafür wurde „mod_python“ entwickelt. Da der Prozess nach der Bearbeitung einer Anfrage nicht beendet wird, können persistente Daten, wie z. B. Datenbankverbindungen, gespeichert werden, und die Verzögerung durch das Starten eines neuen Prozesses entfällt. Auf diese Weise kann Overhead bei der Ausführung vermieden werden.

Da „mod_python“-Module direkt in den Webserver integriert sind, können sie praktisch alles erledigen, was sonst in C programmierte Apache-Module erledigen: Implementierung von anderen Protokollen als HTTP, Filterung der Anfrage und der Antwort, Ermittlung des Datenformats usw.

Da die Skripte direkt im Server laufen, werden sie normalerweise mit den Rechten des Serverprozesses ausgeführt. Normalerweise ist das kein Problem, aber bei unvorsichtigem Umgang können Module wie „mod_python“ zu Sicherheitslücken führen. Dieses Problem betrifft alle Programmiersprachen, die direkt in den Webserver eingebettet werden und ist nicht Python-spezifisch.

Die erste Version von „mod_python“ wurde im Jahr 2000 von Gregory Trubetskoy freigegeben. Seit 2002 ist „mod_python“ ein offizielles Projekt der Apache Software Foundation.

Zum Seitenanfang



Zentralaustralischer Python

Der Zentralaustralische Python, auch Inland-Teppichpython oder Bredls Python (Morelia bredli) ist eine Art der Pythons aus der Familie der Riesenschlangen. Die Art wurde nach dem australischen Herpetologen und Schlangenparkbesitzer Joe Bredl benannt. Sie wird nicht von allen Autoren anerkannt und teilweise als eine Population des Rautenpythons (Morelia spilota) betrachtet.

Der zentralaustralische Python erreicht eine durchschnittliche Länge von 150 bis 200 cm, mit einer Maximallänge von 265 cm. Die Grundfärbung ist sehr variabel und reicht von braun über kräftig rot bis gelblich. Darauf liegen hellere, gelbliche Flecken und Streifen, die meist dunkel gerandet sind. Der Kopf setzt sich deutlich vom langen Hals ab. Die Bauchseite ist weiß bis cremefarben.

An die beiden, sich berührenden oder durch eine Reihe kleiner Schuppen getrennten, Internasalia grenzt ein Paar, durch einen kleinen Schild getrennte, Praefrontalschilde. Der Rest der Kopfoberseite ist von zahlreichen kleinen Schuppen bedeckt. Das große Auge ist von einem Halbkreis aus acht bis zwölf Schuppen umgeben, darüber liegen drei bis fünf Supraocularschilde. Wärmesinnesgruben liegen auf dem Rostralschild, auf den vorderen zwei bis drei der 13 bis 15 Supralabialschilde und auf etwa fünf der 19 bis 21 Infralabialschilde unter dem Auge. Die Rumpfmitte weist 52 bis 54 Reihen glatter Schuppen auf, der Bauch 280 bis 310 Ventral- und 80 bis 120 meist geteilte Subcaudalschilde sowie einen ungeteilten Analschild.

Die Art kommt endemisch in den südlichen Berglandschaften des Northern Territory vor. Die Tiere verbringen den Tag in Felsspalten, Höhlen oder anderen Verstecken und jagen nachts Vögel und kleine Säugetiere. Die Paarung findet von August bis September statt, die Weibchen legen bis zu 40 Eier.

Zum Seitenanfang



Source : Wikipedia