[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Terminal: Ein Terminal öffnen] [:Pakete_installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] [:Rechte:Rechte von Dateien ändern] }}} [[Inhaltsverzeichnis(2)]] [[Bild(Wiki/Icons/python.png, 64, align=left)]] [wikipedia:Python_(Programmiersprache):Python] {en} ist eine interpretierte, objektorientierte höhere Programmiersprache mit dynamischer Typisierung und Bindung. Sie wurde Anfang der 1990er-Jahre von [wikipedia:Guido_van_Rossum:Guido van Rossum] entwickelt. Heute ist Python auf vielen [http://www.python.org/download Plattformen] {en} (z.B. Linux, Unix, OS X, Windows) verfügbar und wird unter Ubuntu für viele zentrale Aufgaben wie z.B. das [:Software-Center:] benutzt. Python ist, neben C, die offizielle Entwicklersprache von Canonical für Ubuntu. Python-Code ist, eine installierte Python-Version vorausgesetzt, direkt ausführbar, d.h. man muss ihn nicht manuell kompilieren. Im Hintergrund wird dabei der Code zuerst in einen plattformunabhängigen Bytecode übersetzt, welcher dann von einem Interpreter ausgeführt wird. Dies geschieht für den Benutzer unsichtbar im Hintergrund. Seit Beginn seiner Entwicklung folgt Python zwei grundlegenden Prinzipien: 1. Einfachheit: Die Syntax von Python ist einfach und verständlich, so dass sich auch Ein- und Umsteiger schnell zurecht finden. Um die Übersichtlichkeit zu erhöhen, erfolgt die Strukturierung von Anweisungsblöcken nicht mit `;` oder Klammern, sondern durch Einrückung. 1. Freiheit: Objektorientierung wird in Python vollständig unterstützt, erzwingt aber keine objektorientierte Programmierung. Python unterstützt zusätzlich verschiedene Programmierstile, wie imperatives, strukturelles, funktionelles oder aspektorientiertes Programmieren. Zusätzlich verfügt Python neben den eingebauten Funktionen und Typen über eine umfangreiche Standardbibliothek mit Paketen zu den verschiedensten Problemstellungen. Sie reichen von der XML- und HTML-Verarbeitung bis hin zu Funktionen, welche bei der Bearbeitung wissenschaftlicher Probleme helfen. Dies bedeutet bei der Erstellung eines Quellcodes häufig eine erhebliche Zeitersparnis. = Installation = Python ist in einer Ubuntu-Standardinstallation bereits enthalten, da auch Systemkomponenten Python als Voraussetzung benötigen. Welche Version installiert ist, zeigt der folgende Befehl im Terminal [1]: {{{#!vorlage Befehl python3 -V #für Python 3 python -V #für Python 2 }}} Es gibt sowohl ein Paket für Python 2.7 als auch für Python 3.x. Eine Parallelinstallation von Python 2 und 3 ist problemlos und konfliktfrei möglich. == Python 3.x == Python 3.x (bei [:Xenial:Ubuntu 16.04] Version 3.5, bei [:Trusty:Ubuntu 14.04] Version 3.4, bei [:Precise:Ubuntu 12.04] Version 3.2, ) wird mit diesem Paket installiert: {{{#!vorlage Paketinstallation python3 }}} == Python 2.7 == Python 2.7 wird über das folgende Paket installiert [2]: {{{#!vorlage Paketinstallation python }}} == Dokumentation == Die Dokumentation für Python ist zwar komplett online verfügbar, kann aber auch als Paket zum Offline-Lesen installiert werden: {{{#!vorlage Paketinstallation python3-doc, Dokumentation zu Python 3.x }}} und/oder: {{{#!vorlage Paketinstallation python-doc, Dokumentation zu Python 2.x }}} Die Dokumentation ist anschließend unter '''/usr/share/doc/python2.7/html/index.html''' bzw. '''/usr/share/doc/python3.x/html/index.html''' zu finden. = Python 2 oder 3? = Python 3, welches seit Anfang 2009 verfügbar ist, ist die Python-Version, welche bevorzugt eingesetzt werden sollte. Python 2.7, der letzte Release des 2er-Zweigs von Python, wurde Mitte 2010 veröffentlicht, ist zwar nach wie vor aktuell und bekommt noch Unterstützung (in Form von Fehlerkorrekturen etc.) bis 2020. Neuerung und Verbesserungen werden aber nicht mehr eingepflegt, diese fließen ausschließlich in Python 3.x ein. Die einzigen Gründe, weswegen Python 2.7 noch eingesetzt wird, sind: * wenn ein Python-Programm ausschließlich als Version für Python 2.7 vorliegt * wenn eine benötigte Python-Bibliothek noch nicht auf Python 3 portiert ist - was aber heutzutage sehr selten der Fall ist. Eine ausführliche Erläuterung zum Thema Python 3 vs. Python 2 ist auch im [https://wiki.python.org/moin/Python2orPython3 Python-Wiki] {en} zu finden. == 2to3 == Seit der Python-Version 2.5 ist das Kommandozeilenprogramm '''2to3''' in der Standardinstallation von Python 2 enthalten. Mit dessen Hilfe lassen sich Python-2-Programme sehr einfach auf ihre Python-3-Tauglichkeit testen bzw. auf Wunsch auch automatisch konvertieren. Die Benutzung ist dabei recht simpel. Im einfachsten Fall ruft man das Programm nur mit dem Namen eines Pythonskripts als Parameter auf: {{{#!vorlage Befehl 2to3 mein_programm.py }}} und erhält als Ausgabe Vorschläge, was zu ändern ist, wie z.B.: {{{ RefactoringTool: Skipping implicit fixer: buffer RefactoringTool: Skipping implicit fixer: idioms RefactoringTool: Skipping implicit fixer: set_literal RefactoringTool: Skipping implicit fixer: ws_comma RefactoringTool: Refactored test_static.py --- mein_programm.py (original) +++ mein_programm.py (refactored) @@ -3,7 +3,7 @@ from bottle import route, static_file, template, run, debug -print 'Starte Programm...' +print('Starte Programm...') @route('/test') def test(): }}} In diesem Beispiel wird vorgeschlagen, dass man das `print`-Statement aus Python 2 durch die print-Funktion aus Python 3 ersetzen soll. Ruft man 2to3 mit der Option `-w` auf, sie werden die Änderungen direkt in der Datei durchgeführt, die alte Datei wird mit der Endung '''.bak''' als Sicherung angelegt. Weitere Hinweise zu `2to3` findet man in der [http://docs.python.org/library/2to3.html Python Dokumentation] {en}. = Programme starten = Möchte man ein in Python 3 geschriebenes Programm starten, gibt man folgenden Befehl ein: {{{#!vorlage Befehl python3 PROGRAMMNAME.py }}} Es wird die installierte Python 3 Version automatisch gewählt (also 3.5 für Ubuntu 16.04, 3.4 für Ubuntu 14.04 und 3.2 für Ubuntu 12.04) Soll das Programm mit Python 2.7 ausgeführt werden, dann lauter der Befehl: {{{#!vorlage Befehl python PROGRAMMNAME.py }}} Auch . Ist im Python-Programm ein [wikipedia:Shebang:] wie "`#!/usr/bin/env python`" oder "`#!/usr/bin/env python3`" vorhanden und das Programm als ausführbar deklariert [4], dann lässt es sich auch direkt ausführen oder per Doppelklick im Dateimanager starten: {{{#!vorlage Befehl PROGRAMMNAME.py }}} = Programme erstellen = Um Programme mit Python zu erstellen, gibt es drei Wege, welche im Folgenden kurz besprochen werden. Dies ist die Arbeit mit * der interaktiven Python-Konsole - der Code wird bei der Eingabe sofort ausgeführt * [:Editoren:] und Kommandozeile - der Code wird in einem Editor erstellt und über die Kommandozeile ausgeführt * [:Entwicklungsumgebungen:] - alle Bestandteile, um ein Programm zu erstellen, sind in einer Umgebung zusammengefasst = Die interaktive Konsole = Die Arbeitsweise der Konsole ist ähnlich der [:Shell:] für Linux. Sie ist vor allem zum Testen von kleineren Abschnitten des Quelltextes nützlich, da die eingegebenen Befehle sofort ausgeführt werden. Für Einsteiger gibt es eine besonders benutzerfreundliche (bzw. einsteigerfreundliche) Variante namens [:bpython:]. == Start == Die interaktive Konsole wird durch den folgenden Befehl gestartet: {{{#!vorlage Befehl python3 }}} bzw. für Python 2.7 mit: {{{#!vorlage Befehl python }}} Es erscheint zuerst eine kurze Meldung zur Python Version, dann kommt der interaktive Prompt `>>>`, wo man nun Befehle eingeben kann: {{{ Python 3.5.1+ (default, Mar 23 2016, 12:57:53) [GCC 5.3.1 20160320] on linux Type "help", "copyright", "credits" or "license" for more information. >>> }}} == "Hallo Welt" in Python == Der Standardweg, um Python-Programme zu erstellen, erfolgt über einen Editor [3]. Manche Editoren bieten praktische Hilfen wie eine Syntaxhervorhebung oder eine automatische Einrückung. Beispiel: Es wird der Quelltext im bevorzugten Editor erstellt und als '''~/hallowelt.py''' im [:Homeverzeichnis:] abgespeichert: {{{#!code python #!/usr/bin/env python3 # Kommentar: Mein Hallo-Welt-Programm fuer Python 3 print('Hallo Welt!') }}} Für Python 2.7 sieht das Programm nur minimal anders aus: {{{#!code python #!/usr/bin/env python # Kommentar: Mein Hallo-Welt-Programm fuer Python 2 print 'Hallo Welt!' }}} Jetzt kann man das Miniprogramm wie [#Programme-starten weiter oben beschrieben] starten. == Nützliche Befehle == Um in der Konsole zu arbeiten, gibt es einige sehr hilfreiche Befehle von Python. Sie werden an einem kurzen Beispiel erklärt. * Es wird eine Auflistung aller der Konsole bekannten Variablen ausgegeben: {{{#!vorlage Befehl >>> dir() }}} * Es wird das Modul ``os`` importiert. Somit erhält man viele Möglichkeiten, um Informationen über das System zu erhalten. Mit ``help(os)`` wird eine kommentierte Übersicht aller im Modul enthaltenen Klassen und Methoden ausgegeben: {{{#!code python >>> import os >>> help(os) }}} == Anpassungen == Die interaktive Konsole lässt sich anpassen, indem man eine Datei verwendet, die bei jedem interaktiven Start ausgeführt wird (ähnlich zur Datei [:Bash/bashrc:bashrc] der [:Bash:]). Dazu muss in der Shell die Umgebungsvariable `PYTHONSTARTUP` auf den gewünschten Dateinamen gesetzt werden (hier '''~/.pythonrc''' im [:Homeverzeichnis:]): {{{#!vorlage Befehl export PYTHONSTARTUP=~/.pythonrc }}} Damit man den `export`-Befehl nicht in jeder neu geöffneten Konsole wieder manuell ausführen muss, trägt man ihn am besten am Ende der [:Bash/bashrc:bashrc]-Datei ein [3]. Nun muss man nur noch die Datei '''~/.pythonrc''' mit einem Editor erstellen und die gewünschten Python-Befehle eintragen. Beispielsweise könnte man oft benötigte Module importieren lassen: {{{#!code python import os import sys }}} === Code-Completion === Es ist sehr praktisch, auch in der interaktiven Konsole eine automatische Vervollständigung des Codes zu nutzen. Dazu wird, wie z.B. auch bei der [:Bash:], '''readline''' genutzt. Allerdings wird in der interaktiven Python-Konsole [[Vorlage(Tasten, Tab)]] normalerweise für Einrückungen mit dem Tabulator-Zeichen genutzt. Für die automatische Vervollständigung ist hier das Drücken von [[Vorlage(Tasten, Esc)]] gefolgt von [[Vorlage(Tasten, Tab)]] vorgesehen (genau genommen: `Meta-tab`). Man kann allerdings auch eine andere Taste bzw. Tastenkombination für die Code-Completion nutzen. Dazu bearbeitet man die in der Umgebungsvariablen `PYTHONSTARTUP` angegebene Datei mit einem Editor und fügt folgendes ein [3]: {{{#!code python try: import readline except ImportError: print("Module readline not available.") else: import rlcompleter readline.parse_and_bind("TASTE: complete") # TASTE ersetzen }}} Statt `TASTE` muss man dabei die gewünschte Taste bzw. Tastenkombination angeben, bspw. `C-o` bzw. [[Vorlage(Tasten, strg+o)]] für eine normalerweise ungenutzte Tastenkombination. Wenn man `tab` für [[Vorlage(Tasten, Tab)]] angibt, bleibt für das echte Tabulatorzeichen trotzdem immer noch [[Vorlage(Tasten, strg+i)]]. Mehr Informationen findet man in der [:Manpage:] von `readline`. = Weiterführende Literatur = Es gibt eine Vielzahl freier, sehr guter und im Internet verfügbarer Einführungen und Tutorials für Python. Einige davon sind im nächsten Abschnitt zu finden. Allgemein empfiehlt es sich für jeden Anfänger, einen Blick in den offiziellen [http://wiki.python.org/moin/BeginnersGuide BeginnersGuide] {en} zu werfen. == Tutorials == === Python 3 === * [http://docs.python.org/py3k/tutorial/ offizielles Python-Tutorial] {en} * [http://learnpythonthehardway.org/book/ Learn Python the Hard Way] {en} - entgegen der Namens ein sehr gutes Tutorial für Einsteiger, die Python lernen möchten * [http://thepythonguru.com/ The Python Guru] {en} - anfängerfreundlich Einführung * [http://greenteapress.com/wp/think-python-2e/ Think Python - How to Think Like a Computer Scientist 2nd Editoon] {en} für Python 3 - auch im PDF-Format === Python 2 === * [https://docs.python.org/2.7/tutorial/ offizielles Python-Tutorial] {en} * [http://de.wikibooks.org/wiki/Python_unter_Linux Wikibook: Python unter Linux] {de} - Einführung in Python speziell unter Linux * [http://www.greenteapress.com/thinkpython/thinkpython.html Think Python - How to Think Like a Computer Scientist] {en} für Python 2 - auch im PDF-Format * [https://pythonspot.com Pythonspot] {en} - Viele Python tutorials * [http://pythonprogramminglanguage.com Python Programming Language] {en} - Anfängerfreundliche Python-Tutorial = Links = == Intern == * [:Anaconda:] - Python-Distribution * [:pep8:] - Python-Code auf PEP8 Konformität testen * [:pip:] - die aktuell bevorzugte Methode, Pakete aus dem "Python Package Index" zu installieren, zu deinstallieren und zu aktualisieren * [:virtualenv:] - mehrere (virtuelle) Python-Umgebungen parallel installieren * [:Django:] - ein Framework zum Entwickeln von Internetapplikationen * [:Bottle:] - WSGI-basierte Webanwendungen mit Python erstellen * [:couchdb-python:] - CouchDB-Anbindung für Python * [:Pygame:] - Sammlung von Python-Modulen zur Spieleprogrammierung * [:Python Setuptools:] - die ältere Methode, Python-Pakete aus dem Python Package Index installieren * [:Quickly:] - GTK-basierte Anwendungen in Python für Ubuntu erstellen und veröffentlichen * [:ReportLab:] - PDF-Dateien aus Python-Skripten heraus erzeugen * [:SQLAlchemy:] - sehr leistungsfähig Datenbank-Anbindung und objekt-relationaler Mapper für Python * [:Sphinx:] - System zur Generierung von (Programm-) Dokumentationen mit direkter Anbindung an Python == Extern == * [http://www.python.org/doc/faq/ Python FAQ] {en} - Häufig gestellte Fragen und Antworten * [http://wiki.python.org/moin/IntegratedDevelopmentEnvironments Entwicklungsumgebungen für Python (IDE)] {en} * [http://pythonide.blogspot.de/ SPE IDE - Stani's Python Editor] {en} * [http://www.python-forum.de/ Python-Forum] {de} - sehr gute Anlaufstelle für alle einfachen und schwierigen Probleme rund um Python * [http://wiki.python.de/ Deutsches Python-Wiki] {de} * [http://www.dokuwelt.de/tutorials_artikel.php?themenID=44&kategorieID=1 Linksammlung] {de} - zu (meist) deutschsprachigen Python-Anleitungen #tag: Programmierung, Python