2017-09-27 39 views
1

爲什麼PyCharm將嵌套代碼塊末尾的換行符疊加到前一個塊中?PyCharm中的註釋和嵌套代碼摺疊

例(嘗試摺疊的第一個「如果」塊):

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指出

塊註釋一般適用於部分(或全部)下面 他們的代碼,並縮進到同一級別的代碼。

所以我認爲這是事實,你的下面的評論是不縮進,導致該行爲。

如果您要將「#無形換行註釋」縮進到與之後的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'的註釋:'''即使在摺疊其前一個代碼塊時仍然可見,因爲該塊不包含進一步的嵌套。 –