Verschiedene Themen

Verschiedene Hinweise

Ausführbare Python-Programme

Du kannst ein Skript auch in eine ausführbare Datei verwandeln. Als Beispiel betrachten wir das hallo.py-Skript aus dem Block 3. Öffne das Skript mit dem Editor deiner Wahl und schreibe folgendes in die erste Zeile:

#!/usr/bin/env python3

Das #! sieht zwar aus wie ein Python-Kommentar, hat aber eine von Python unabhängige Bedeutung. Damit teilst du deiner Shell mit, dass diese Datei mit dem nachfolgenden Programm (in diesem Fall, dein Standard Python-Interpreter) ausgeführt werden soll. Nun musst du dir noch die nötigen Rechte geben um diese Datei auszuführen. Das hast du in der Unix-Einführung gelernt. Anschliessend kannst du die Datei starten

./hallo.py

Falls sich die Datei nicht im aktiven Verzeichnis befindet, musst du statt ./ den korrekten Pfad angeben. Im Rahmen dieses Kurses, werden wir diese Methode aber nicht nutzen.

Zeitmessungen mit %timeit

Meist ist es egal wie schnell dein Programm läuft. Erst wenn ein Code-Block sehr oft ausgeführt wird, wird die Laufzeit wichtig. Für solche Fälle bietet IPython ein praktisches Tool.

%timeit sum(range(1000))

10000 loops, best of 3: 130 us per loop

Das Beispiel zeigt, dass mein Laptop 130 Mikrosekunden braucht um sum(range(1000)) zu berechnen. (Das Resultat ist der beste von 3 Mittelwert aus jeweils 10000 Wiederholungen. So können die Effekte der Messgenauigkeit der Uhr sowie der Hintergrund-Belastung des Systems reduziert werden.)

Wenn du die Zeit für einen komplizierteren Code-Block messen möchtest, verpackst du den am besten in eine Funktion.

def suchen(needle, haystack): for item in haystack: if needle == item: return True return False # in ipyton mit pylab zahl = 42 liste = randint(10000, size=1000) %timeit suchen(zahl, liste) liste = randint(10000, size=1000) %timeit suchen(zahl, liste)

pylint

pylint ist ein weiteres der vielen nützlichen Tools, die dir dein Leben einfacher machen können. pylint ist ein statischer Code-Checker. Er weisst dich auf Probleme und Fehler in deinem Programm-Code hin. Dabei erkennt pylint sowohl diverse Fehler wie auch viele Verstösse gegen die Konventionen und Empfehlungen der Python-Community. Pylint ist deshalb insbesondere auch ein hilfreiches Tool um sauber zu arbeiten.

Du kannst pylint in Spyder starten
Source > Run static code analysis
In der Shell startest du pylint mit folgendem Befehl

pylint -r n -i y file.py

Die -r n -i y Option reduziert den Output auf das wesentliche. Wenn du sie weg lässt, erhältst du einen ausführlichen Bericht, mit den Nachrichten zu Beginn.

Der Output von pylint könnte zum Beispiel so aussehen.

************* Module test C: 1, 0: Missing module docstring (missing-docstring) C: 1, 0: Invalid constant name "name" (invalid-name) C: 2, 0: Invalid constant name "sex" (invalid-name)

  1. (Zeile 1, Buchstabe 0) Du hast dein Skript nicht dokumentiert
  2. (Zeile 1, Buchstabe 0) Der Variablenname "name" folgt nicht der Konvention
  3. (Zeile 2, Buchstabe 0) Der Variablenname "sex" folgt nicht der Konvention

Das erste Problem solltest du nun beheben. Die beiden anderen Punkte, entstehen weil wir ein sehr einfaches Programm geschrieben haben und sind eigentlich kein echtes Problem. Du kannst pylint mitteilen, dass er diese "Problem" ignorieren soll, indem du zu Beginn des Skripts folgende Zeile einfügst

# pylint: disable=invalid-name

Für die Aufgaben dieses Kurses kannst du invalid-name immer deaktivieren. Im Allgemeinen solltest du das aber nur machen, nachdem du alle entsprechenden Meldungen kontrolliert und verstanden hast.