What I Learn Today

Start Date : 2022/02/07 ~

창고/PEP (Python)

PEP 및 PEP8 소개 (feat. PEP 공식 문서)

HannaDev 2022. 3. 11. 23:10
📬 PEP 0 : PEPs 목차
📬 PEP 1 : PEP 목적 및 가이드라인

📬 PEP 8 : Python 코드에 대한 스타일 가이드라인
→ PEP 에 대한 전반적인 소개입니다.

 

<목차>

  1. PEP Introduction
  2. PEP Types (3가지)
  3. Meta-PEPs (PEPs about PEPs or Processes) 목록
  4. PEP8 Introduction
  5. A Foolish Consistency is the Hobgoblin of Little Minds

▶︎ PEP Introduction

  • PEP 는 Python Enhancement Proposal 의 약자이다.
  • PEP 는 Python 커뮤니티에 정보를 제공하거나 Python 또는 Python 프로세스, 환경에 대한 새로운 기능을 설명하는 디자인 문서이다.
    • PEP 는 기능에 대한 간결한 기술 사양과 기능에 대한 근거를 제공해야 한다.
  • 우리는 PEP 가 주요 새 기능을 제안하고, 문제에 대한 커뮤니티 의견을 수집하고, Python 에 적용된 설계 결정을 문서화하기 위한 기본 메커니즘이 되기를 바란다.
    • PEP 작성자는 커뮤니티 내에서 합의를 구축하고 반대 의견을 문서화할 책임이 있다.
  • PEP 는 버전이 지정된 레포지토리에서 텍스트 파일로 유지 관리되기 때문에 개정 기록은 기능 제안의 역사적 기록이다.

▶︎ PEP Types (3가지)

  1. 표준 트랙 PEP (Standards Track)
    • Python 의 새로운 기능 또는 구현을 설명한다.
    • 후속 PEP 가 미래 버전에서 표준 라이브러리 지원을 추가하기 전에 현재 Python 버전에 대한 표준 라이브러리 외부에서 지원될 상호 운용성 표준을 설명할 수도 있다.
  2. 정보용 PEP (Informational)
    • Python 디자인 문제를 설명하거나 Python 커뮤니티에 일반 지침 또는 정보를 제공하지만 새로운 기능을 제안하지는 않는다.
    • 정보용 PEP 가 반드시 Python 커뮤니티 합의 또는 권장 사항을 나타내는 것은 아니므로 사용자와 구현자는 자유롭게 정보용 PEP 를 무시하거나 조언을 따를 수 있다.
  3. 프로세스 PEP (Process)
    • Python 을 둘러싼 프로세스를 설명하거나 프로세스의 변경 (또는 이벤트)를 제안한다.
    • 프로세스 PEP 는 표준 트랙 PEP 와 비슷하지만 Python 언어 자체 이외의 영역에 적용된다.
    • 그들은 구현을 제안할 수 있지만 Python 의 코드베이스에는 제안하지 않는다.
    • 종종 커뮤니티 합의가 필요하다.
    • 정보용 PEP 와 달리 권장 사항 이상이며 사용자는 일반적으로 이를 무시할 수 없다.
      • [ex] 절차, 지침, 의사 결정 프로세스의 변경 사항, Python 개발에 사용되는 도구 또는 환경의 변경 사항 포함. 모든 메타 PEP 도 프로세스 PEP 로 간주한다.

Meta-PEPs (PEPs about PEPs or Processes)

 
PEP PEP Title PEP Author(s)
1 PEP 목적과 가이드 라인 Warsaw, Hylton, Goodger, Coghlan
4 사용되지 않는 표준 모듈 Cannon, von Löwis
5 Language Evolution 가이드라인 Prescod
6 Bug Fix Releases Aahz, Baxter
7 C 코드에 대한 스타일 가이드라인 GvR, Warsaw
8 Python 코드에 대한 스타일 가이드라인 GvR, Warsaw, Coghlan
10 Python-dev 투표 지침 Warsaw
11 더 이상 지원되지 않는 플랫폼 von Löwis, Cannon
12 ReStructuredText PEP 샘플 템플릿 Goodger, Warsaw, Cannon
387 이전 버전과의 호환성 정책 Peterson
609 PyPA Governance Ingram, Gedam, Harihareswara
676 PEP Infra 프로세스 Turner

▶︎ PEP8 Introduction

  • PEP 8 은 파이썬 코드의 작성규칙 (code convention) 에 대해 설명하는 문서이다.
    • 이 스타일 가이드는 추가 규칙이 식별되고 언어 자체의 변경으로 인해 과거 규칙이 더 이상 사용되지 않게 됨에 따라 시간이 지남에 따라 발전한다.
    • 많은 프로젝트에는 고유한 코딩 스타일 지침이 있다. 충돌이 있는 경우 해당 프로젝트에 대해 해당 프로젝트별 가이드가 우선 적용된다.
  • PEP 8 은 권장사항이지 절대적인 법칙은 아니다.

▶︎ A Foolish Consistency is the Hobgoblin of Little Minds

  • Guido 의 주요 통찰력 중 하나는 코드가 작성된 것보다 훨씬 더 자주 읽혀진다는 것이다.
  • 여기에 제공된 지침은 코드의 가독성을 개선하고 광범위한 Python 코드에서 일관성을 유지하기 위한 것이다.
  • PEP 20 에서 말했듯이 “가독성이 중요하다”.
  • 일관성 중요도 (높음 → 낮음)
    • 하나의 모듈 또는 기능 내에서의 일관성
    • 프로젝트 내에서의 일관성
    • PEP 8 스타일 가이드와의 일관성
  • 특정 지침을 무시해야하는 다른 좋은 이유
    1. 지침을 적용하면 이 PEP 를 따르는 코드를 읽는데 익숙한 사람이라도 코드 가독성이 떨어질 때.
    2. (아마도 역사적인 이유로 인해) 코드를 깨뜨리기도 하는 주변 코드와의 일관성을 유지하기 위해.
    3. 문제의 코드는 지침의 도입보다 이전에 있었고 해당 코드를 수정할 다른 이유가 없는 경우.
    4. 과거 버전의 파이썬으로 작성된 코드가 PEP 8 을 준수할 경우 작동하지 않아 과거 버전과 호환될 필요가 있을 경우.

대표 이미지용