Studium, Ausbildung und Beruf

web uni-protokolle.de
 powered by
NachrichtenLexikonProtokolleBücherForenSonntag, 22. September 2019 

Python (Programmiersprache)


Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.
Python ist eine plattformunabhängige interpretierte und objektorientierte Programmiersprache . Sie wurde Anfang der 90er Jahre Guido van Rossum am Centrum voor Wiskunde Informatica in Amsterdam entwickelt. Den Namen erhielt die Sprache der englischen Comedy-Truppe Monty Python .

Inhaltsverzeichnis

Philosophie

Python ist eine Sprache die den nicht zu einem einzigen bestimmten Programmierstil zwingt. werden sowohl objektorientierte und strukturierte als auch funktionale Programmierung. Die Datentypen werden dynamisch verwaltet; eine statische Typprüfung z.B. bei C++ ) gibt es also nicht. Die Verwaltung gewordenen Speicherplatzes erfolgt automatisch ( Garbage collection ).

Obwohl bei der Werbung für Python die Gegenüberstellung zu Perl benutzt wurde gibt es zwischen beiden viele Gemeinsamkeiten. Während Perl eine reichhaltige und als verwirrend empfundene Syntax besitzt wurde bei Entwicklung von Python besonders darauf geachtet die möglichst einfach und damit besser les- und zu gestalten. Obwohl Python (ebenso wie Perl) als " Skriptsprache " bezeichnet wird sind damit schon eine großer Softwareprojekte bewältigt worden z.B. der Zope Application Server und das Dateisystem Mojo

Datentypen und Strukturen

Python besitzt eine größere Anzahl von Datentypen . Neben der herkömmlichen Ganzzahl- und Fließkommaarithmetik es transparent auch beliebig große Ganzzahlen und Komplexe Zahlen .

Es verfügt über den üblichen Zierrat Zeichenkettenoperationen allerdings mit einer Besonderheit: Zeichenketten sind Python unveränderliche Objekte. Damit führen Operationen die Ändern einer Zeichenkette bewerkstelligen sollen - wie die Ersetzung von Zeichen - dazu dass eine neue Zeichenkette zurückgegeben wird.

In Python ist der Datentyp an Wert gebunden und nicht an eine Variable Datentypen werden dynamisch vergeben so wie bei LISP - und nicht wie bei Java . Alle Werte werden per Referenz übergeben.

Trotz der dynamischen Typverwaltung enthält Python gewisse Typprüfung. Diese ist strenger als bei aber weniger strikt als bei Objective CAML . Implizite Umwandlungen sind für numerische Typen so dass man beispielsweise eine komplexe Zahl einer langen Ganzzahl ohne explizite Typumwandlung multiplizieren Anders als bei Perl allerdings gibt es implizite Umwandlung zwischen Zahlen und Zeichenketten; in für Zeichenketten kann also anstelle einer Zeichenkette direkt eine Zahl verwendet werden.

Sammeltypen

Python besitzt mehrere Sammel typen darunter Listen Tupel und Wörterbücher. Listen und Zeichenketten sind Folgen (Sequenzen) und kennen fast alle die Methoden: Über die Zeichen einer Kette kann ebenso iterieren wie über die Elemente einer Listen sind erweiterbare Felder (Arrays) wohingegen Tupel feste Länge haben und unveränderbar sind.

Der Zweck solcher Unveränderbarkeit hängt mit Wörterbüchern (Dictionaries) zusammen ein Datentyp der auch Hashliste oder assoziatives Feld bezeichnet wird. Um auch unter den der Übergabe per Referenz die Datenkonsistenz zu müssen die Schlüssel eines Wörterbuches vom Typ "unveränderbar" sein. ins Wörterbuch eingetragenen Werte können dagegen von beliebigem Typ sein.

Objektsystem

Das Typsystem von Python ist auf Klassensystem abgestimmt. Obwohl die eingebauten Datentypen genau nicht eigentlich Klassen sind können Klassen von Typ erben. So kann man die Eigenschaften Zeichenketten oder Wörterbüchern erweitern - und sogar von Ganzzahlen falls man das möchte. Python auch Mehrfachvererbung.

Die Sprache unterstützt direkt den Umgang Typen und Klassen. Typen können ausgelesen (ermittelt) verglichen werden - in Wirklichkeit sind die (wie in Smalltalk ) selbst ein Typ. Die Attribute eines können als Wörterbuch extrahiert werden.

Syntax

Python wurde so entworfen dass es lesbar ist. Die Anweisungen sind übersichtlich anzuordnen häufig englische Schlüsselworte wo andere Sprachen Interpunktionszeichen und dazu besitzt Python spürbar weniger syntaktische als viele strukturierte Sprachen wie C Perl oder Pascal .

Z.B. kennt Python nur zwei Schleifenformen for zur Iteration über die Elemente einer und while zur Wiederholung einer Schleife so lange ein logischer Ausdruck wahr ist. Es hat weder das verwickelte for oder das do...while von C noch Perls until obwohl die entsprechenden Äquivalente natürlich ausgedrückt können. Und genau so hat es für auch nur die Konstruktion if...elif...else und kein switch oder goto zu Sprungzielen.

Die Sache mit den Leerzeichen

Am ehesten ungewohnt an der Python-Syntax die Art und Weise wie die Grenzen Blockstrukturen gekennzeichnet werden. Viele Programmierer die noch eine Zeile Python-Code geschrieben haben kennen diese mit den Leerzeichen" vom Hörensagen weil das deutlicher Unterschied zu herkömmlichen Sprachen ist.

Blockstrukturen wie sie ursprünglich aus ALGOL stammen werden z.B. in Sprachen wie C und Perl benutzt wobei die Blockgrenzen Klammern oder Schlüsselworte markiert werden. (C und benutzen beispielsweise { } ; Pascal benutzt begin und end .) In all diesen Sprachen gibt es noch die Sitte einen Block durch eine zu kennzeichnen damit er optisch von der abgesetzt ist die nicht zum Block gehört.

Python dagegen nimmt eine Anleihe bei weniger bekannten Programmiersprache Occam auf - anstatt Satzzeichen oder Schlüsselworten es die Einrückungen selbst um den Verlauf Blockes zu kennzeichnen. Ein kurzes Beispiel macht schnell klar. Hier sind Funktionen in C in Python die das gleiche tun - Fakultät einer Ganzzahl berechnen:

C:

 int factorial(int x) { if (x 0) { return(1); } else { return(x factorial(x - 1)); } }  

Python:

 def factorial(x): if x == 0: 1 else: return x * factorial(x -  

Manche Programmierer die von Algol-ähnlichen Sprachen gewohnt sind dass Leerzeichen keine Bedeutung haben dadurch anfänglich etwas irritiert. Es wurden auch unverhohlen Vergleiche zum Lochkarten -Format von Fortran gezogen: Die Formatfreiheit von Programmiersprachen galt als Fortschritt weil endlich das Symbol selbst entscheidende Rolle spielte und nicht seine Position der Zeile.

Für Python-Programmierer dagegen ist "die Sache den Leerzeichen" einfach eine Weiterführung des Einrückungs-Brauchs Algol-Programmierer ohnehin immer gefolgt sind.

Ein Problem kann sich daraus ergeben: ein Editor benutzt der Tabulator-Zeichen in der Datei so kann eine Einrückung entstehen die nicht Blockstruktur entspricht. Man sollte also entweder keine zur Einrückung benutzen oder den Editor so einstellen dass er die Tabulator-Zeichen eine Anzahl von Leerzeichen ersetzt.

Funktionales Programmieren

Erwähnt wurde bereits dass Python auch ausdrucksstarke syntaktische Elemente zur funktionalen Programmierung verfügt. schon zu vermuten war vereinfachen diese das mit Listen und anderen Sammeltypen. Eine solche ist die Listennotation die aus der funktionalen Haskell stammt; hier bei der Berechnung der fünf Zweierpotenzen:

 zahlen = [1 2 3 4 hoch_zwei = [ 2 ** n for in zahlen ]  

Weil in Python Funktionen als Argumente dürfen kann man auch ausgeklügeltere Konstruktionen ausdrücken z.B. die Fortsetzungstechnik ( "Continuation semantics" ).

Pythons Schlüsselwort lambda könnte manche Anhänger der funktionalen Programmierung Solche lambda -Blöcke in Python können nur Ausdrücke enthalten keine Anweisungen. Damit sind sie nicht der mögliche Weg um eine Funktion zurückzugeben. Die Vorgehensweise ist stattdessen eine Funktion einfach so indem man einen lokalen Namen benutzt wie folgenden Beispiel einer einfachen Funktion nach den von Haskell Brooks Curry :

 def add_and_print_maker(x): def temp(y): print "%d %d = %d" % (x y x+y) temp  

Ausnahmebehandlung ( Exceptions )

Python unterstützt (und nutzt ausgiebig) die als ein Mittel um Fehlerbedingungen zu testen. kann sogar die Ausnahmemeldungen abfangen die von verursacht werden!

Ausnahmen erlauben einen bündigeren Fehlertest mit Sicherheit als viele andere Verfahren mit denen Fehler oder Ausnahmezustände mitteilen kann. Ausnahmen sind sie führen nicht dazu den Code durch Test von Rückgabewerten zu verunstalten wie das C geschieht; und sie können sich leicht der Aufruffolge hangeln falls ein Fehler an höhere Programmebene gemeldet werden soll.

Der Python-Stil ermutigt zum Einsatz von wann immer eine Fehlerbedingung entstehen könnte. Es tatsächlich so dass es in Python z.B. eines vorherigen Dateitestes auf Beschreibbarkeit üblich ist Schreibfunktion einfach auszuprobieren und eine eventuelle Ausnahme - falls der Zugriff verwehrt wird.

Außerdem nützlich ist dieses Prinzip bei Konstruktion benutzersicherer Eingabe-Prompts:

 while True: try: num = raw_input("Eine eingeben: ") num = int(num) break except print "Eine _Zahl_ bitte!"  

Dieser Code wird den Benutzer so nach einer Nummer fragen bis dieser einen eingibt der sich per int() in einen konvertieren lässt ohne dass ein Fehler auftritt.

Standardbibliothek

Python verfügt über eine große Standardbibliothek es sich für viele Anwendungen gut eignet. Module der Standardbibliothek können mit in C Python selbst geschriebenen Modulen ergänzt werden. Die ist besonders auf Internet-Anwendungen zugeschnitten mit der einer großen Anzahl von Standardformaten und -Protokollen MIME und HTTP ). Module zur Schaffung grafischer Schnittstellen zur mit relationalen Datenbanken und zur Manipulation regulärer Ausdrücke sind ebenfalls enthalten.

Die Standardbibliothek ist eine der größten von Python. Das meiste davon ist plattformunabhängig dass auch größere Python-Programme oft auf Unix Macintosh und anderen Plattformen ohne Änderung laufen.

Sonstiges

So wie LISP - und Perl Debugger - unterstützt der Python-Interpreter auch einen interaktiven Modus in dem Ausdrücke am Terminal eingegeben die Ergebnisse sofort betrachtet werden können. Das nicht nur für Neulinge angenehm die die lernen sondern genauso auch für erfahrene Programmierer: können interaktiv ausgiebig getestet werden bevor man in ein geeignetes Programm aufnimmt. Python ist die meisten gängigen Betriebssysteme frei erhältlich.

Weblinks


  



Bücher zum Thema Python (Programmiersprache)

Dieser Artikel von Wikipedia unterliegt der GNU FDL.

ImpressumLesezeichen setzenSeite versendenSeite drucken

HTML-Code zum Verweis auf diese Seite:
<a href="http://www.uni-protokolle.de/Lexikon/Python_(Programmiersprache).html">Python (Programmiersprache) </a>