2016-06-01 17 views
2

Ich bin auf einem Python-Projekt arbeiten und ab jetzt mein Code hat über mehr als 400 Zeilen. An einer Stelle musste ich einen mehrzeiligen Kommentar über einen kleinen Fehler schreiben, der eine Arbeit erfordert, und der Interpreter entschied sich für einen Syntaxfehler.Python 3.x mehrzeiliger Kommentar wirft Syntaxfehler

Entsprechend dem Interpreter tritt der Syntaxfehler bei elif auf. Ich habe meine Einrückung überprüft, Registerkarten in Leerzeichen umgewandelt usw. Nichts scheint zu funktionieren.

    if some_condition_1 == True: 
         do_something() 

        """ 
        Sub stage (b): 
        Refer documentation [1.7A] for ... 
        .... 
        .... 
        .... 
        """ 
        elif condition_1 == True: 
         if condition_2 == False: 
          list.append(item) 

Wenn ich jedoch den mehrzeiligen Kommentar entferne, wird der Code ordnungsgemäß ausgeführt.

Jede Idee, was falsch los ist? Bitte beachten Sie, dass das Code-Beispiel zeigt ich oben habe, ist bei ganz oben der Datei, und es gibt keine Chance, für irgendetwas falsch an anderer Stelle zu gehen.

Antwort

7

Dies ist ein Einrücken Fehler. Ihr "mehrzeiliger Kommentar" (wirklich mehrzeiliger String) muss wie alle anderen unter dem if Block eingerückt sein.

""" These kinds of things """ sind nicht wirklich in Python kommentiert. Sie erstellen nur eine Zeichenfolge und werfen dann den Wert weg (nicht irgendwo speichern). Da Python keine echten mehrzeiligen Kommentare hat, verwenden viele Leute sie auf diese Weise. Da es sich jedoch nicht um echte Kommentare handelt (sie werden vom Interpreter nicht ignoriert), müssen sie alle normalen Syntaxregeln, einschließlich Einrückungsregeln, befolgen.

(Sie beachten Sie, dass, wenn ich sage „die Schaffung einer Zeichenfolge“ Ich spreche locker. CPython zumindest hat eine Optimierung nicht ein Objekt hier zu erstellen.)

+0

Dank einer Tonne. Ich habs! –

+0

@PawanKartik Bitte drücken Sie das Häkchen unter der Antwort, um dieses "Gelöst" zu markieren, wenn es Ihnen nichts ausmacht. Es hält die Roboter-Hausmeister davon ab, verrückt zu werden. :) –

+1

tat ich. Es gab ein Zeitlimit von 10 Minuten. Also habe ich darauf gewartet, dass es aufhört. :) –