파이썬 파일 명명 규칙?


137

PEP-8 https://www.python.org/dev/peps/pep-0008/#package-and-module-names 의이 부분을 보았습니다.

이것이 모듈 / 클래스 / 패키지의 파일 이름을 나타내는 지 확실하지 않습니다.

각각에 대해 하나의 예가있는 경우 파일 이름은 모두 밑줄이있는 소문자 여야합니까? 또는 다른 것?


4
tl; dr : 두 클래스 FooBar이며 FooBiz둘 다 파일에 들어갈 수 있지만 somepkg/foobar.py(thus :) from somepkg.foobar import FooBar클래스를 제거 TimerError할 수 있습니다 except/timer_error.py(thus from except.timer_error import TimerError). CamelCase때때로 제거 하면 단어를 읽기가 더 어려워 snake_case파일 이름에 사용될 수 있습니다.
michael

답변:


156

인용 https://www.python.org/dev/peps/pep-0008/#package-and-module-names :

모듈은 짧은 소문자 이름을 가져야합니다. 가독성을 높이려면 모듈 이름에 밑줄을 사용할 수 있습니다. 밑줄은 사용하지 않는 것이 좋지만 파이썬 패키지는 소문자로 된 짧은 소문자 이름을 가져야합니다.

대한 클래스 :

클래스 이름은 일반적으로 CapWords 규칙을 사용해야합니다.

그리고 함수 및 (로컬) 변수 이름 은 다음과 같아야합니다.

가독성을 높이기 위해 필요에 따라 밑줄로 구분 된 단어가있는 소문자

모듈, 클래스 및 패키지의 차이점에 대해서는 이 답변 을 참조하십시오 .

  • 파이썬 모듈은 단순히 파이썬 소스 파일로, 클래스, 함수 및 전역 변수를 노출 할 수 있습니다.
  • 파이썬 패키지는 단순히 파이썬 모듈의 디렉토리입니다.

PEP 8은 다음과 같이 말합니다 .

  • 모듈 (파일 이름)은 짧은 소문자 이름을 가져야 하며 밑줄을 포함 할 수 있습니다.
  • 패키지 (디렉토리)는 짧은 소문자 이름을 가져야하며 밑줄이 없어야 합니다.
  • 클래스는 CapWords 규칙을 사용해야합니다.

PEP 8은 이름이 짧아야 한다고 말합니다 . 이 답변 은 변수 이름을 만들 때 고려해야 할 사항에 대한 좋은 개요를 제공하며 다른 이름 (클래스, 패키지 등)에도 적용됩니다.

  • 변수 이름은 완전한 설명자가 아닙니다.
  • 의견에 세부 사항을 적으십시오.
  • 너무 특정한 이름은 너무 특정한 코드를 의미 할 수 있습니다.
  • 빠른 검색을 위해 짧은 범위를 유지하십시오.
  • 가독성에 대해 생각하면서 시간을 보내십시오.

끝으로, 명명 규칙에 대한 개요는 Google Python 스타일 가이드에 있습니다.


5
모듈에 클래스가 포함되어 있으므로 모듈 내 클래스를 사용하고 하나의 모듈에 여러 클래스를 가질 수 있습니까?
darkace

6
예, 모듈에 0 개, 1 개 이상의 클래스가있을 수 있습니다.
agold

1
모든 패키지가 클래스와 마찬가지로 CapsWords 규칙을 따르기 때문에 프로젝트가 끝나기 전에 시간 내에 이것을 발견하게되어 기쁩니다.
Bas Jansen

1
@pypmannetjies 이것은 실제로 또 다른 질문이지만, 이해할 수없는 짧은 이름보다 긴 이해할 수있는 이름을 선호해야한다고 말하고 싶습니다.
agold

1
패키지 이름의 경우 "밑줄을 사용하지 않는 것이 좋습니다."라고 금지되어 있지 않습니다. 파이썬 철학에서는 "실용성이 순결을 능가하지만"규칙을 따라야합니다. 물론, 가장 좋은 규칙을 따라 할 수있는 방법 찾을 수 있습니다 실용적 (이름을 분할 어쩌면 여러 패키지를 만들기를 some> long> name대신 somelongname?)
Juh_

0

다음 은 다양한 유형의 Python 이름 규칙에 대한 링크입니다.

파이썬 스타일 가이드는 Guido의 명명 규칙 권장 사항을 기반으로합니다.

여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.