#!/usr/bin/env python # encoding: utf-8 # Die erste Zeile sagt, # dass es ein Python Programm ist, und sorgt dafür, # dass es in GNU/Linux und OSX beim anklicken startet. # Die zweite Zeile sagt, dass die Textdatei # in utf-8 kodiert ist, # also Umlaute u.ä. möglich sind. """Hallo Welt - Begrüße die Welt Dieses Programm gibt das bekannte "Hallo Welt" aus und ist damit das traditionell erste Programm fast jedes Programmierers. pykdepykdeauiaepp Hier ist es mit ausführlichen Metadaten erweitert, um zu zeigen, wie in Python Informationen eingefügt werden können, und für größere Programme auch sollten. Natürlich ist auch die einfache Version richtig; eine einfache Textdatei, in der nur der Text --- print "Hallo Welt" --- steht. Sie ist auf Deutsch kommentiert, um anfangenden Python Hackern aus Deutschland den Einstieg zu erleichtern. Normalerweise sollten Kommentare für Programme, die auch andere mal in die Finger kriegen könnten, auf Englisch geschrieben sein, damit auch japanische, französische, britische, indische, usw. Python Hacker sie verstehen. Entsprechend sollte das Englisch einfach gehalten sein. In Python wird diese Datei (hallo_welt.py) übrigens als Modul bezeichnet, weil in einer einzelnen Datei bereits sehr viel enthalten sein kann, das auch andere Dateien wieder nutzen können. Nun folgen Doctests, mit denen geprüft wird, ob dieses Modul wirklich tut, was es soll. Sie helfen dabei, Programme erweiterbar zu halten. Wird diese Datei direkt ausgeführt, prüft der Doctests, ob alle Befehle die definierten Ausgaben geben und warnt, wenn sie es nicht tun. Doctests bestehen aus einem Befehl, der mit '>>> ' eingeleitet wird (mit Leerzeichen danach) und einer oder mehrerer Zeilen mit Ausgaben, die nicht mit '>>> ' anfangen. Die Ausgabe endet, sobald eine Zeile nur Leerzeichen enthält. Um eine leere Ausgabezeile zu simulieren, wird in diese Zeile die Zeichenkette <BLANKLINE> geschrieben. Effektiv funktionieren Doctests wie der PythOn Interpreter. Es können auch mehrere doctests geschachtelt werden, wofür aber jede Zeile in der Code steht mit '>>> ' begonnen werden muss; theoretisch kann ein gesamtes Programm in doctests geschrieben werden, solange die Einrückung beachtet wird. Doctests: >>> hallo_welt() Hallo Welt Um gleich noch mehr sinnvolle Programmiertechniken zu enthalten, ist diese Datei über Versionsverwaltung verfügbar (Mercurial: http://selenic.com/mercurial/ ), so dass alle Entwicklungsschritte einsehrbar sind: - http://bitbucket.org/ArneBab/hallo_welt/ """ ### Metadaten ### __author__ = "Julius Hohnerlein und Arne Babenhauserheide" __version__ = "0.1" # Die Versionnummer ist ein String, # damit sie nicht in den Zahlenwert 0.1 umgewandelt wird. __date__ = '2008-07-08' __url__ = 'http://bitbucket.org/ArneBab/hallo_welt/' # Der Copyright Hinweis in Python Stil: GPLv3 -> freie Software. __copyright__ = """ Hallo Welt - Begrüße die Welt ----------------------------------------------------------------- © 2008 - 2010 Copyright by Arne Babenhauserheide and Julius Hohnerlein This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA """ ### Funktionen ### def hallo_welt(): """Gib die Zeichenkette "Hallo Welt" aus. Das Kernstück dieses Moduls :) """ print "Hallo Welt" ### Selbsttest ### def _test(): """Führe die Doctests aus. Der einzelne Unterstrich am Anfang des Funktionsnamens (_test) sorgt dafür, dass diese Funktion privat ist, also von außen nicht (automatisch) gesehen wird. """ # Importiere die testmod Funktion aus dem doctest modul. # Auf diese Art lassen sich jegliche Module # und Teile von Modulen importieren. from doctest import testmod # und rufe sie auf. testmod() # Wenn diese Datei direkt aufgerufen wird, soll sie sich selbst testen und hallo_welt() aufrufen. # Dafür prüfen wir, ob der Name des Moduls, # das diese Datei definiert, __main__ ist, # also ob es das Hauptmodul ist. if __name__ == "__main__": # Erst testen wir. _test() # Danach rufen wir hallo_welt() auf. hallo_welt()