2016-08-19 11 views
14

정의 : http://www.urbandictionary.com/define.php?term=Dunder코딩 스타일 (PEP8) - 모듈 수준 "dunders" "던더"(<strong>D</strong> ouble <strong>점수</strong> 아래)의


나는 모듈 수준의 위치에 따라 질문이 있습니다 파이썬 코드에서 "dunders"(__all__, __version__, __author__ 등).

PEP8을 통해 읽고 this 스택 오버플로 질문을 보는 중에 질문이 떠 올랐습니다.

허용 된 대답은 말한다 :

__author__ 글로벌 "변수"이므로 수입 아래에 나타납니다. 같은 __all__, __author__, __version__ 등 (이 선도하고 두 밑줄을 후행 즉, 이름)

모듈 수준 "dunders"

그러나 PEP8 섹션 Module level dunder names

나는 다음을 읽어 을 모듈 docstring 다음에 가져 오기 문 앞에 넣어야합니다 ( __future__ 수입 제외). 파이썬은 장래 수입품 이 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 ignoring PEP8?

질문 : 이중 밑줄을 사용하여 이러한 변수를 저장하는 올바른 방법/장소는 무엇입니까?

+2

PEP 8은 살아있는 문서입니다. 이전에 주제에 * 침묵했을 수도 있다는 점을 고려하십시오. –

+0

@MartijnPieters - 섹션이 추가/변경되었을 때 확인할 수 있습니까? – linusg

답변

16

최근에 PEP 8은 으로 업데이트되었습니다. 가져 오기 전에 위치를 지정하려면으로 지정하십시오. 6 월 7 일에 최선을 다하고 revision cf8e888b9555, 2016을 참조하십시오

__all__ 위치를 휴식.

모든 모듈 수준의 먼지를 같은 위치에 놓고 여분의 버전 부기 정보 을 제거하십시오.

클로즈 # 27187. 이안 리의 패치.

텍스트는 from __future__ import ...주의 사항을 처리하기 위해 further updated the next day입니다.

issue #27187에 대한 패치 링크는 this pycodestyle issue을 참조하며, PEP 8이 명확하지 않은 것으로 확인되었습니다.

이 변경 전에 모듈 수준의 덩어리 전역에 대한 명확한 지침이 없으므로 PyCharm과 다른 대답은 일 때 이었습니다. PyCharm이 PEP 8 검사를 어떻게 구현하는지 잘 모르겠습니다. 그들이 pycodestyle project (defacto Python 스타일 검사기)을 사용한다면 자동으로 고정 될 것이라고 확신합니다. 그렇지 않으면 버그를 신고하여이 문제가 해결되었는지 확인하십시오.

+0

와우, 매우 빠르고 명확합니다. 9시에이 대답을 받아 들일 것입니다. (왜 그렇게 오래 걸리나요?) 분 누구나이 변경 사항에 주목하고 다음 번에 PEP8 검사기 동작을 업데이트합니까? – linusg

+0

@linusg : pycodestyle 프로젝트에서 문제가 제기되었으므로 업데이트 될 예정입니다. PyCharm을 사용하여 버그를 수정하십시오. –

+0

다음 날 PyCharm에서 PEP8 검사가 어떻게 수행되는지 궁금해하고 결국 버그를 제기 할 것입니다. 나는 내 질문을 편집 할 것이다. – linusg