Python PEP 8: пустые строки в начале модуля

Есть вопрос, который касается этого, но не говорит обо всех интересующих меня моментах.

PEP 8 говорит о пустых строках:

Separate top-level function and class definitions with two blank lines.

Тогда, если у вас есть:

  1. Модуль только с классом:

    # -*- coding: utf-8 -*-
    
    
    class A(object):
        pass
    

    Вы разделяете начало класса и комментарий к кодировке двумя пустыми строками?

  2. Модуль с оператором импорта и классами:

    # -*- coding: utf-8 -*-
    
    import module
    
    
    class B(object):
        pass
    
    
    class C(object):
        pass
    

    Вы разделяете оператор импорта и комментарий к кодировке одной пустой строкой?

    А оператор импорта и начало класса с двумя пустыми строками?

  3. И основной модуль:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    
    import module
    
    
    def main():
        a = module.A()
        return 0
    
    
    if __name__ == '__main__':
        status = main()
    

    Вы разделяете оператор импорта и функцию верхнего уровня двумя пустыми строками?

    А конец функции верхнего уровня и условный оператор с двумя пустыми строками?


person Super User    schedule 08.04.2013    source источник


Ответы (1)


Существует модуль Python под названием pep8, который может проверить ваш код на соответствие рекомендациям pep8.

Я попробовал запустить pep8 на примерах, которые вы перечислили, и на нескольких их вариантах, и в целом программа pep8 приняла все их как соответствующие рекомендациям pep8. Таким образом, ответ на все ваши вопросы — да.

Существует некоторый уровень субъективности — например, у вас может быть две или одна новая строка между основной функцией и сегментом if __name__ == '__main__'. Однако я бы не стал слишком беспокоиться о соответствии pep8 — просто скачайте и установите программу pep8 вместе с другими анализаторами кода (такими как пилинт). Пока ваш код проходит эти тесты, он достаточно хорош.

person Michael0x2a    schedule 08.04.2013
comment
Зачем тестировать соответствие PEP-8, а затем исправлять, если можно просто автоматически исправить github.com/psf/black - person NeilG; 23.09.2019