2017-09-27 20 views
1

なぜPyCharmはネストされたコードブロックの最後の改行コメントを前のブロックに折りたたんでいますか?PyCharmのコメントとネストされたコードの折りたたみ

例(最初の「if」ブロックを折りたたみてみてください):

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 

関数内のコメントは、常にインデントされなければならないと述べているPythonでの仕様はありますか?そうでない場合は、PyCharmの設定を調整して、ネストされたコードを折りたたむときに改行コメントが消えないようにする方法がありますか?

答えて

1

PEP8

ブロックコメントは、一般的にいくつか(またはすべて)に適用されることを述べて にそれらを次のコードと、そのコードと同じレベルにインデントされています。

あなたの次のコメントは、その動作の原因となるインデントされていないということです。

"#invisible newline comment"を後に続くelifと同じレベルにインデントすると、PyCharmがそれを上のブロックに折りたたむことがなくなります。

# 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

ありがとうございます。非常に知っておきたい... PEP8のコンプライアンスは今私が大規模なリファクタリングを必要とするかもしれないので、少し難しいですが。うん!しかし、PEP8は、なぜコードブロックに別の(ネストされた)コードブロックが含まれている場合にのみ現象が起こるのかを完全には説明していません。 '' 'elif a == 'us':' ''の上のコメントは、前のコードブロックを折りたたんでも、そのブロックにそれ以上のネストは含まれていないので、まだ見えることに注目してください。 –

関連する問題