Gibt es eine Empfehlung wie ein Python file aussehen soll?
Vorallem die ersten Zeilen?
Sowas wie:
# -*- coding: utf-8 -*-
""" file name: some analyzuer
Author: Max Mustermann
...
"""
file template in python?
- __blackjack__
- User
- Beiträge: 13112
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@kkornfield: Meine Minimalvorlage für Programme sieht so aus:
Die etwas längere Fassung:
Ob die Metainformationen im Quelltext Sinn machen, oder besser in einer extra README-Datei stehen, mache ich üblicherweise davon abhängig, ob das Programm/Skript auch ohne zusätzliche Dateien auskommt oder wahrscheinlich verteilt/eingesetzt wird, und ob die Informationen selbst im Programm gebraucht werden. Also beispielsweise wenn das ein Kommandozeilenprogramm ist, das Autor und Version ausgibt, oder zumindest optional ausgeben kann.
Code: Alles auswählen
#!/usr/bin/env python3
def main():
...
if __name__ == "__main__":
main()
Code: Alles auswählen
#!/usr/bin/env python3
"""
Beschreibung was das Programm macht.
"""
__author__ = "Marc 'BlackJack' Rintsch"
__contact__ = "...@..."
__date__ = "2022-08-09"
__version__ = "0.1a"
def main():
...
if __name__ == "__main__":
main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Hallo,
in der ersten Zeile steht der Shebang, danach folgen alle Importe. Weiter geht es mit der Definition von Konstanten, Klassen und Funktionen.
Das Programm wird aus einer Funktion mit dem Name 'main' gesteuert, diese wird nach den Klassen und Funktionen definiert. Zum Schluss folgt der Einstiegspunkt ist die 'main'-Funktion.
Hast du soetwas gesucht?
Grüße
Dennis
in der ersten Zeile steht der Shebang, danach folgen alle Importe. Weiter geht es mit der Definition von Konstanten, Klassen und Funktionen.
Das Programm wird aus einer Funktion mit dem Name 'main' gesteuert, diese wird nach den Klassen und Funktionen definiert. Zum Schluss folgt der Einstiegspunkt ist die 'main'-Funktion.
Code: Alles auswählen
#!/usr/bin/env python3
importe
KONSTANTEN
Klassen und/oder Funktionen
def main():
# Hieraus wird das Program gesteuert.
if __name__ == "__main__":
main()
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
wenn du dein Programm / Modul öffentlich zur Verfügung stellst und du die Schöpfungshöhe für hoch genug hältst solltest du den Quellcode noch unter eine Lizenz deiner Wahl stellen und die Lizenz in der Datei nennen. "Lizenz" muss ja nichts restriktives sein, sondern eine (sehr) liberale Lizenz wie MIT oder CC0.
Gruß, noisefloor
wenn du dein Programm / Modul öffentlich zur Verfügung stellst und du die Schöpfungshöhe für hoch genug hältst solltest du den Quellcode noch unter eine Lizenz deiner Wahl stellen und die Lizenz in der Datei nennen. "Lizenz" muss ja nichts restriktives sein, sondern eine (sehr) liberale Lizenz wie MIT oder CC0.
Gruß, noisefloor
Das ist eine gute Frage. Du kannst stets mit einem minimalen Template anfangen und dies dann je nach Anspruch weiter aufbauen. Das meiste wurde hier schon vorgeschlagen. Sinnvoll ist folgender Start:
Damit kannst du jedes Programm beginnen und hast ein Template, das zur Vermeidung globaler Variabler beitragen kann. Wenn dein Programm größer wird und weitere Funktionen hat, sowie andere Module importiert, so gehören diese Importe an den Anfang der Datei:
Soll das Programm direkt von der Kommandozeile ausführbar sein, so brauchst du eine "shebang" Angabe an der ersten(!) Zeile in der Datei, die den Pfad zum gewünschten Python-Interpreter angibt, was zuverlässig aber nur auf dem eigenen System funktioniert, da andere Systeme (d.h. die Rechner anderer Leute) anders eingerichtet sein können. Daher siehst du oft, dass in solchen Fällen der Pfad aus dem Environment bezogen wird (was üblicherweise das System-Python startet):
Auf Systemen, die nur noch Python 3 bereitstellen, kann auch
funktionieren. Das solltest du aber zuvor testen, denn es könnte dadurch auch Python 2 gestartet werden – etwas, das nur noch mit legathy-Software gemacht werden sollte.
Eine optionale Kodierungs-Angabe wie
muss gleichfalls am Anfang der Datei stehen. Falls sich dort bereits die shebang Information befindet, dann in der zweiten Zeile – nicht aber umgekehrt!
Die Kodierungs-Angabe war wichtig bei Python 2 Programmen, da der Interpreter ansonsten von einer ascii-Kodierung ausging. Seit Python 3 ist dies utf-8. Daher kann die Kodierungs-Angabe in Python 3 entfallen. Die Datei muss dann aber auch im utf-8 Format abgespeichert werden. Moderne Editoren ermöglichen dies, oftmals ist es sogar bereits die Standard-Einstellung.
Die Meta-Informationen, wie Autor und Lizenz, kannst du dann nach der optionalen shebang Zeile, aber vor den Importen, als Kommentare oder innerhalb eines Dac-Strings ablegen. Sollen diese Informationen automatisch extrahierbar sein, so kannst du dich an __blackjack__s Beispiel orientieren. Das aber eher was für fortgeschrittene und komplexere Anwendungen.
Code: Alles auswählen
def main():
# entry point
# muss nicht 'main' heissen, ist in Anlehnung an C aber oft üblich
if __name__ == "__main__":
# import switch
main()
Damit kannst du jedes Programm beginnen und hast ein Template, das zur Vermeidung globaler Variabler beitragen kann. Wenn dein Programm größer wird und weitere Funktionen hat, sowie andere Module importiert, so gehören diese Importe an den Anfang der Datei:
Code: Alles auswählen
import that
import this # -> easter egg ;)
def more_functions_here():
...
def main():
# entry point
if __name__ == "__main__":
# import switch
main()
Code: Alles auswählen
#!/usr/bin/env python3
Code: Alles auswählen
#!/usr/bin/env python
Eine optionale Kodierungs-Angabe wie
Code: Alles auswählen
# -*- coding: utf-8 -*-
Die Kodierungs-Angabe war wichtig bei Python 2 Programmen, da der Interpreter ansonsten von einer ascii-Kodierung ausging. Seit Python 3 ist dies utf-8. Daher kann die Kodierungs-Angabe in Python 3 entfallen. Die Datei muss dann aber auch im utf-8 Format abgespeichert werden. Moderne Editoren ermöglichen dies, oftmals ist es sogar bereits die Standard-Einstellung.
Die Meta-Informationen, wie Autor und Lizenz, kannst du dann nach der optionalen shebang Zeile, aber vor den Importen, als Kommentare oder innerhalb eines Dac-Strings ablegen. Sollen diese Informationen automatisch extrahierbar sein, so kannst du dich an __blackjack__s Beispiel orientieren. Das aber eher was für fortgeschrittene und komplexere Anwendungen.
Wenn man noch einen (oder eher 3-5) Schritt(e) weitergehen möchte, in Richtung Scaffolding ganzer Projekte, gibt es z.B. so etwas wie https://github.com/cookiecutter/cookiecutter
Mir ist das meistens zu viel/zu spezifisch was da herauskommt; andere mögen es.
Mir ist das meistens zu viel/zu spezifisch was da herauskommt; andere mögen es.