Hi,
bin noch ein Neuling bei der Programmiersprache Python, bisher jedoch sehr begeistert, da ich bis jetzt eigentlich nur Vorteile in der Syntax gefunden habe (im Vergleich zu anderen Sprachen). Nun bin ich aber doch auf ein simples Thema gestoßen und zu meiner Verwunderung fand ich bisher keine Lösung: Kommentare!
Eine einzelne Zeile auskommentieren, kein Problem. Doch wie kommentiere ich einen ganzen Codeblock aus? Alla /* .... */ in C etc. Geht das in Python überhaupt? Wäre blöd, wenn nicht, weil es lästig wäre, wenn man mal "kurz" 100 Zeilen Code auskommentieren sollte....
Kommentare
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi blubber!blubber hat geschrieben:Wäre blöd, wenn nicht, weil es lästig wäre, wenn man mal "kurz" 100 Zeilen Code auskommentieren sollte....
Willkommen im Python-Forum!
Es gibt nur die Möglichkeit, einzelne Zeilen als Kommentar zu markieren. Das entspricht dem "Es sollte nur eine Möglichkeit geben, etwas zu tun."
Aber keine Angst. Jeder gute Programmiereditor macht das für dich. Du musst also nicht 100 mal das Doppelkreuz schreiben, um 100 Zeilen auszukommentieren.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Da bieten eigentlich alle vernünftigen Editoren eine Funktion zum Aus- und Einkommentieren von markiertem Text.
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
Hi,
solche Blockkommentare gibt es in Python nicht, werden meiner Meinung nach auch nicht benötigt. Wenn man etwas kommentieren möchte, benutzt man die Raute:
Aber das wirklich Geniale an Python ist die automatische Dokumentation!
Man kann kaum zuviel kommentieren. Aber im Gegensatz zu C kann man sie hier viel besser nutzen. Also: statt auskommentieren lieber in Methoden aufteilen, die Du dann dokumentierst.
Grüße,
Michael
solche Blockkommentare gibt es in Python nicht, werden meiner Meinung nach auch nicht benötigt. Wenn man etwas kommentieren möchte, benutzt man die Raute:
Code: Alles auswählen
# dies ist ein Kommentar
Code: Alles auswählen
class Beispiel:
"""Diese Klasse dient zur Veranschaulichung der Auto-Dokumentation
Enthaltene Methoden:
anzeigen - bla, bla"""
def __init__(self, args):
"Konstruktor von Beispiel"
pass
def anzeigen(self, args):
"""Hier kommt wieder eine
umfassende Dokumentation."""
pass
print "Dokumentationsstring:", Beispiel.__doc__
help(Beispiel)
Grüße,
Michael
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Man kann auch Multiline-String-Marken für Blockkommentare verwenden. Das ist zwar semantisch nicht korrekt oder zumindest sinnvoll (es werden Strings erzeugt, aber nicht referenziert, also gleich wieder vom Garbage Collector eingesammelt), aber syntaktisch in Ordnung:
Dennoch ist die Editor-Hilfe zum Auskommentieren mehrerer Zeilen vorzuziehen. Da kann es allerdings Probleme geben, wenn darin selbst Kommentarzeilen enthalten sind und die dann wieder einkommentiert werden.
Weiterhin komplettieren Docstrings Klassen-/Funktions-/Methoden-Definitionen bereits, ein 'pass' wird nicht mehr benötigt.
Umsetzung:
Code: Alles auswählen
print 'hallo'
"""
print 'banane'
print ', '.join(['Hund', 'Katze', 'Maus'])
"""
print 'Dies sollte die zweite Zeile sein.'
Dazu: PEP8-konform sollten die Docstrings *immer* dreifache doppelte Anführungzeichen sein, entweder Einzeiler inklusive der String-Marker sein oder ansonsten nach der ersten Zeile (inkl. Anfangs-Marker) eine Leerzeile folgen sowie die End-Marker in einer eigenen Zeile stehen.Michael Schneider hat geschrieben:Code: Alles auswählen
class Beispiel: """Diese Klasse dient zur Veranschaulichung der Auto-Dokumentation Enthaltene Methoden: anzeigen - bla, bla""" def __init__(self, args): "Konstruktor von Beispiel" pass def anzeigen(self, args): """Hier kommt wieder eine umfassende Dokumentation.""" pass
Weiterhin komplettieren Docstrings Klassen-/Funktions-/Methoden-Definitionen bereits, ein 'pass' wird nicht mehr benötigt.
Umsetzung:
Code: Alles auswählen
class Beispiel:
"""Diese Klasse dient zur Veranschaulichung der Auto-Dokumentation
Enthaltene Methoden:
anzeigen - bla, bla
"""
def __init__(self, args):
"""Konstruktor von Beispiel"""
def anzeigen(self, args):
"""Hier kommt wieder eine umfassende Dokumentation."""
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Werde ich jetzt gesteinigt, wenn ich
schreibe?
Code: Alles auswählen
def func(foo, bar, xyzzy):
"""
Return a fooized version of xyzzy.
Raises RandomError on failure.
"""
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
In der Regel stellt sich dieses Problem gar nicht. Denn die Zeilen müssen ja nicht umbedigt ausgewertet - zwei Kommentarrauten in einer Zeile sind wunderbar gültig, d.h. wenn ein Kommentar in der Zeile steht ist es kein Problem ihn nochmal auszukommentieren. Natürlich sehen doppelte Kommentare unschön aus, aber ich halte Blockkommentare sowieso nur für temporäre Kommentare, die man wieder löscht, nachdem sie ihre Aufgabe erfüllt haben.Y0Gi hat geschrieben:Dennoch ist die Editor-Hilfe zum Auskommentieren mehrerer Zeilen vorzuziehen. Da kann es allerdings Probleme geben, wenn darin selbst Kommentarzeilen enthalten sind und die dann wieder einkommentiert werden.
Mit dem Visual Mode kann man in Vim wunderbar Zeilen aus und einkommentieren, da bin ich sogar von dessen Benutzerfreundlichkeit ausnahmsweise mal erstaunt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Genau so sehe ich das auch. In eclipse nutze ich Block-Comments (STRG+4 Kommentieren, STRG+5 dekommentieren) oft um temporär was auszukommentieren um eine andere Möglichkeit zu testen. Danach lösche ich den Block-Comment oder dekommentiere es wider falls die andere Möglichkeit doch nicht so gut ist. -- Allso ich sehe da auch kein Problem.Leonidas hat geschrieben:[...]Natürlich sehen doppelte Kommentare unschön aus, aber ich halte Blockkommentare sowieso nur für temporäre Kommentare, die man wieder löscht, nachdem sie ihre Aufgabe erfüllt haben.[...]
Das Problem wären nicht zwei Kommentarzeichen. Das Problem besteht dann wenn der Editor bereits vorhandene einzelne Kommentarzeichen entfernt.
Oder willst du mir sagen, dass du Kommentarzeilen immer mit zwei Kommentarzeichen einleitest, damit o.g. noch eines übrig lässt und der Kommentar als solcher erhalten bleibt?
birkenfeld: Ich habe nur genannt, was PEP 8 und 257 vorschlagen - wobei auch deine Möglichkeit nicht explizit ausgeschlossen wird. Sie ist in jedem Fall akzeptabel - hauptsache konsistent verwendet.
Oder willst du mir sagen, dass du Kommentarzeilen immer mit zwei Kommentarzeichen einleitest, damit o.g. noch eines übrig lässt und der Kommentar als solcher erhalten bleibt?
birkenfeld: Ich habe nur genannt, was PEP 8 und 257 vorschlagen - wobei auch deine Möglichkeit nicht explizit ausgeschlossen wird. Sie ist in jedem Fall akzeptabel - hauptsache konsistent verwendet.
- Michael Schneider
- User
- Beiträge: 569
- Registriert: Samstag 8. April 2006, 12:31
- Wohnort: Brandenburg
Hi,
also ich benutze immer doppelte Kommentarzeichen, wenn ein Kommentar dauerhaft (zur Dokumentation) eingefügt wurde. So kann ich ihn schnell von den Zeilen unterscheiden, die nur temporär entfernt wurden.
Und ja, das steht auch nicht im PEP.
Grüße,
Michel
also ich benutze immer doppelte Kommentarzeichen, wenn ein Kommentar dauerhaft (zur Dokumentation) eingefügt wurde. So kann ich ihn schnell von den Zeilen unterscheiden, die nur temporär entfernt wurden.
Und ja, das steht auch nicht im PEP.
Grüße,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Also ich erkenne Zeilen die nur temporär auskommentiert wurden, immer daran, dass da keine Kommentare stehen, sondern Quelltext.
Ich bemühe mich auch, dass solche Blöcke gar nicht erst so lange da stehen, dass ich sie vergessen könnte. Im Zweifelsfall lösche ich sie einfach. Wenn ich den Quelltext später doch mal wieder brauche, ist er ja noch in der Versionsverwaltung.
Ich bemühe mich auch, dass solche Blöcke gar nicht erst so lange da stehen, dass ich sie vergessen könnte. Im Zweifelsfall lösche ich sie einfach. Wenn ich den Quelltext später doch mal wieder brauche, ist er ja noch in der Versionsverwaltung.