【问题标题】:Comments & Nested Code Folding in PyCharmPyCharm 中的注释和嵌套代码折叠
【发布时间】:2017-09-27 00:17:03
【问题描述】:

为什么 PyCharm 将嵌套代码块末尾的换行 cmets 折叠到前一个块中?

示例(尝试折叠第一个“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 中有没有规定函数内的 cmets 应该始终缩进的规范?如果没有,是否有某种方法可以调整 PyCharm 中的设置,使其在折叠嵌套代码时不会消失换行 cmets?

【问题讨论】:

    标签: python pycharm code-folding


    【解决方案1】:

    PEP8 声明

    Block cmets 通常适用于后面的部分(或全部)代码 它们,并且缩进到与该代码相同的级别。

    所以我认为这是您的以下评论没有缩进导致这种行为的事实。

    如果您将“# 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':
    

    【讨论】:

    • 谢谢。很高兴知道......虽然有点令人生畏,因为 PEP8 合规性可能需要我现在进行大规模重构。啊!然而,PEP8 并没有完全解释为什么只有当代码块包含另一个(嵌套)代码块时才会出现这种现象。请注意 elif a == 'us': 上面的注释是如何在您折叠其先前的代码块时仍然可见的,因为该块不包含进一步的嵌套。
    猜你喜欢
    • 2016-10-26
    • 2023-03-23
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2018-12-27
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多