Стиль кодирования (PEP8) – Уровень модуля "dunders"

Определение «Dunder» (Doubble under score): http://www.urbandictionary.com/define.php?term=Dunder


У меня вопрос, связанный с размещением модулей уровня «dunders» (например, __all__ , __version__ , __author__ и т. Д.) В коде Python.

Вопрос подошел ко мне при чтении через PEP8 и просмотре этого вопроса о переполнении стека.

В принятом ответе говорится:

__author__ – глобальная «переменная» и поэтому должна появляться ниже импорта.

Но в разделе PEP8 « Уровни модуля» я читал следующее:

Уровень модуля «dunders» (т.е. имена с двумя ведущими и двумя __all__ __author__ подчеркивания), такие как __all__ , __author__ , __version__ и т. Д., Следует размещать после документа docstring, но перед любыми __future__ импорта, кроме импорта __future__ . Python обязывает, что будущий-импорт должен появиться в модуле перед любым другим кодом, кроме docstrings.

Авторы также приводят пример кода:

 """This is the example module. This module does stuff. """ from __future__ import barry_as_FLUFL __all__ = ['a', 'b', 'c'] __version__ = '0.1' __author__ = 'Cardinal Biggles' import os import sys 

Но когда я поставил выше в PyCharm, я вижу это предупреждение (также см. Скриншот):

PEP8: импорт уровня модуля не вверху файла

PyCharm игнорирует PEP8?

Вопрос: Каков правильный способ / место для хранения этих переменных с двойными символами подчеркивания?

One Solution collect form web for “Стиль кодирования (PEP8) – Уровень модуля "dunders"”

Недавно PEP 8 был обновлен, чтобы разместить место перед импортом. См. Ревизию cf8e888b9555 , совершенную 7 июня 2016 года:

Отдохните __all__ .

Поместите все глушители уровня модуля в одном месте и удалите избыточную информацию о верификации версии.

Закрывается # 27187. Патч от Ян Ли.

Текст был дополнительно обновлен на следующий день, чтобы решить проблему from __future__ import ... .

Патч-ссылки для выпуска № 27187 , которые, в свою очередь, ссылаются на эту проблему pycodestyle , где было обнаружено, что PEP 8 неясен.

До этого изменения, поскольку не было четкого указания на глобальные глобальные глобальные уровни, поэтому PyCharm и другой ответ были правильными в то время . Я не уверен, как PyCharm реализует свои проверки PEP 8; если они используют проект pycodestyle (defacto Python style checker), то я уверен, что он будет исправлен автоматически. В противном случае, возможно, зарегистрируйте ошибку с ними, чтобы увидеть это исправлено.

Python - лучший язык программирования в мире.