파이썬 소스 코드를 어떻게 구성해야합니까? [닫은]


99

저는 Python을 시작하고 있으며 (한 번해볼 시간입니다) 몇 가지 모범 사례를 찾고 있습니다.

내 첫 번째 프로젝트는 여러 스레드에서 명령 줄 실험을 실행하는 대기열입니다. 매우 긴 main.py파일 을 받기 시작 했는데 파일을 나누고 싶습니다. 일반적으로 나는 찾는다 : 파이썬 프로그래머는 어떻게 여러 소스 파일을 구성합니까? 귀하에게 적합한 특정 구조가 있습니까?

내 구체적인 질문은 다음과 같습니다.

  1. 각 클래스는 별도의 파일에 있어야합니까?
  2. 소스 코드와 관련된 단위 테스트를 어떻게 구성해야합니까?
  3. 문서 주석, 특히 명령 줄 작업에 대한 주석을 어디에 넣어야합니까?
  4. 여러 디렉터리를 사용하는 경우 디렉터리간에 클래스를 어떻게 가져 옵니까?

여기에서 시행 착오를 통해 내 결론을 도출 할 수 있지만 좋은 것부터 시작하고 싶습니다 .


4
이것은 코드 구성에 대한 몇 가지 사항을 설명합니다. docs.python.org/tutorial/modules.html
Nikola Smiljanić

2
다음은 파이썬 문서에서 더 유용한 정보입니다. <br> docs.python.org/3/tutorial/modules.html#packages
rda3mon

11
이 질문은 특히 Python 커뮤니티에서 광범위하게 수용되는 규칙을 찾고 있습니다. 대부분의 답변과 마찬가지로 시간이 지남에 따라 바뀔 수 있지만 대답은 의견의 문제가 아닙니다. 나는 이것을 다시 열거 나 최소한 원래 답변을 삭제 취소하는 것이 좋습니다.
Andres Jaan Tack 2014

답변:


32

기사 에릭 지적 이 큰 파이썬 코드베이스를 조직의 세부 사항을 포함하기 때문에 굉장합니다.

Google에서 여기에 도착하여 하나의 큰 소스 파일을 여러 개의 관리하기 쉬운 파일로 분할하는 방법을 찾으려고한다면 프로세스를 간략하게 요약하겠습니다.

현재 다음과 같은 파일에 모든 것이 있다고 가정합니다 main.py.

  • 동일한 폴더에 다른 소스 파일을 만듭니다 ( utils.py이 예제에서는 우리의 파일이라고합시다 ).
  • 필요한 클래스, 함수, 명령문 등을 다음 main.py으로 이동하십시오.utils.py
  • 년은 main.py상단에 한 줄을 추가합니다 :import utils

개념적으로 이것이하는 일은 utils다른 소스 파일에서 호출되는 새 모듈을 만드는 것 입니다. 그런 다음 필요할 때마다 가져올 수 있습니다.


Eric이 지적한 기사를 기억하십니까? 이 질문 / 대답에 에릭을 찾을 수 없습니다
다니엘 Rucci에게

7
@ DanR, 예, 이것은 기사 입니다. 어떤 이유로 중재자가 56 개의 찬성표를 받았음에도 불구하고 답변을 삭제했습니다.
Drew Noakes

1
@DrewNoakes : 링크 전용 답변이기 때문에 삭제 된 것 같습니다. 그가 기사의 요점을 요약했다면.
smci jul.

1
. 불행하게도 기사는 이제 죽은 링크 :-(입니다 최신 보관 된 버전은 여기에 있습니다 : web.archive.org/web/20190714164001/http://...
이고르 Brejc

7

코드와 테스트를 구성하는 방법은 모든 OO 언어에서와 똑같습니다.

내가하는 방식의 답변. 옳지 않을 수도 있지만 나를 위해 일합니다.

  1. 기능이 분할되는 방식에 따라 다릅니다. 내 주요 Python 앱의 경우 진입 점에 대한 클래스가있는 파일 1 개와 다양한 기능의 패키지가 있습니다.
  2. 이클립스에 PyDev를 사용하고 Java에서와 같이 구성합니다.
>  Workspace
>     |
>     |-Src
>     |   |-Package1
>     |   |-Package2
>     |   |-main.py
>     |-Test
>         |-TestPackage1
>         |-TestPackage2
  1. 모든 곳에서 DocString을 사용하여 모든 것을 추적하십시오.
  2. 관련 __init__.py파일이 폴더에 있는지 확인한 후 . 그것의 단순한 경우from module import class

5
하지만 한 가지주의 할 점은 자바는 패키지, 파일 및 클래스와 일종의 독재 적 관계를 취한다는 것입니다. 때때로 나는 내가 정말로 원하는 것보다 훨씬 더 많은 소스 파일을 갖게된다. 일부 조직의 규칙 (예 : 파일에서 하위 (중첩 된) 내부 클래스 또는 "도우미"클래스를 피하십시오)은 컴파일러의 요구 사항을 넘어서이를 악화시킵니다. 질서 정연하게 유지하고 계층 구조는 유용하지만, 작업을 피하십시오.
Roboprog 2009
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.