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


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.