2017-09-27 5 views
1

Warum faltet PyCharm Zeilenkommentare am Ende eines verschachtelten Codeblocks in den vorherigen Block?Kommentare und verschachtelter Code Falzen in PyCharm

Beispiel (versuchen Sie das erste "if" Block Faltung):

def print_me(a): 

# newline comment 
    if a == 'me': 
     dummy_padding = '' 
     if not dummy_padding: 
      favorite_place = 'zoo' 
      print(a) 
     else: 
      pass 

# invisible newline comment 
    elif a == 'you': 
     dummy_padding = '' 
     pass 

# visible newline comment 
    elif a == 'us': 
     dummy_padding = '' 
     if not dummy_padding: 
      favorite_place = 'movies' 
      print(favorite_place) 

    # visible indented comment 
    elif a == 'them': 
     dummy_padding = '' 
     pass 

    return a 

Gibt es eine spec in Python, die, dass die Kommentare in einer Funktion Staaten sollten immer eingerückt werden? Wenn nicht, gibt es eine Möglichkeit, die Einstellungen in PyCharm so anzupassen, dass Zeilenumbrüche beim Falten von verschachteltem Code nicht verschwinden?

Antwort

1

PEP8 besagt, dass

Kommentare blockieren im Allgemeinen auf einige (oder alle) Code anwenden, die ihnen folgt, und sind eingerückt auf dem gleichen Niveau wie dieser Code.

Also ich denke, es ist die Tatsache, dass Ihr folgender Kommentar nicht eingerückt ist, dass dieses Verhalten verursacht.

Wenn Sie den "# invisible newline comment" auf das gleiche Level wie das folgende elif einrücken würden, sehen Sie, dass PyCharm es nicht mehr in den oberen Block faltet.

# newline comment 
    if a == 'me': 
     dummy_padding = '' 
     if not dummy_padding: 
      favorite_place = 'zoo' 
      print(a) 
     else: 
      pass 

    # invisible newline comment -- now not folded 
    elif a == 'you': 
+0

Danke. Sehr gut zu wissen ... obwohl es etwas beängstigend ist, da die PEP8-Compliance mich jetzt massiv umgestalten lässt. Pfui! PEP8 erklärt jedoch nicht vollständig, warum das Phänomen nur auftritt, wenn der Codeblock einen anderen (verschachtelten) Codeblock enthält. Beachten Sie, dass der Kommentar über '' 'elif a == 'us':' '' auch dann noch sichtbar ist, wenn Sie den vorherigen Codeblock falten, da dieser Block keine weitere Verschachtelung enthält. –