Kommentare

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
blubber
User
Beiträge: 123
Registriert: Montag 19. März 2007, 09:08

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....
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

blubber hat geschrieben:Wäre blöd, wenn nicht, weil es lästig wäre, wenn man mal "kurz" 100 Zeilen Code auskommentieren sollte....
Hi blubber!

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.
BlackJack

Da bieten eigentlich alle vernünftigen Editoren eine Funktion zum Aus- und Einkommentieren von markiertem Text.
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Hiho,

gibt afaik keine ander Möglichkeit als in jeder Zeile dieses "#" für ein Kommentar zu setzen. Aber wenn du funktionen beschreibst, ist es besser Docstrings zu nutzen. :D

//edit: BlackJack und gerold waren schneller
blubber
User
Beiträge: 123
Registriert: Montag 19. März 2007, 09:08

Ja ok, Danke für die schnellen Antworten !
Benutzeravatar
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:

Code: Alles auswählen

# dies ist ein Kommentar
Aber das wirklich Geniale an Python ist die automatische Dokumentation!

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)
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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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:

Code: Alles auswählen

print 'hallo'

"""
print 'banane'
print ', '.join(['Hund', 'Katze', 'Maus'])
"""

print 'Dies sollte die zweite Zeile sein.'
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.


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
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.

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."""
Benutzeravatar
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

Code: Alles auswählen

def func(foo, bar, xyzzy):
    """
    Return a fooized version of xyzzy.

    Raises RandomError on failure.
    """
schreibe?
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

birkenfeld: negativ. Die Art der Einrückung verwend ich auch :D
TUFKAB – the user formerly known as blackbird
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
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.

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
sape
User
Beiträge: 1157
Registriert: Sonntag 3. September 2006, 12:52

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.[...]
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.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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.
Benutzeravatar
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. :lol:

Grüße,
Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
BlackJack

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.
Antworten