2017-09-27 131 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'的注释:'''即使在折叠其前一个代码块时仍然可见,因为该块不包含进一步的嵌套。 –