"pydoc" --- 설명서 생성과 온라인 도움말 시스템
**********************************************

**소스 코드:** Lib/pydoc.py

======================================================================

"pydoc" 모듈은 파이썬 모듈로부터 자동으로 설명서를 생성합니다. 설명서
는 콘솔에 텍스트 페이지로 표시하거나, 웹 브라우저로 제공하거나, HTML
파일에 저장할 수 있습니다.

모듈, 클래스, 함수 및 메서드의 경우, 표시된 설명서는 객체와 재귀적으로
그것의 설명 가능한 멤버들의 독스트링(즉, "__doc__" 어트리뷰트)에서 파
생됩니다. 독스트링이 없으면, "pydoc"은 소스 파일의 클래스, 함수 또는
메서드의 정의 바로 위나 모듈의 맨 위에 있는 주석 줄 블록에서 설명을 얻
으려고 합니다 ("inspect.getcomments()"를 참조하십시오).

내장 함수 "help()"는 대화형 인터프리터에서 온라인 도움말 시스템을 호출
합니다. 이 시스템은 "pydoc"을 사용하여 설명서를 콘솔에 텍스트로 생성합
니다. 같은 텍스트 설명서는 운영 체제의 명령 프롬프트에서 **pydoc**을
스크립트로 실행하여 파이썬 인터프리터 외부에서도 볼 수 있습니다. 예를
들어,

   python -m pydoc sys

를 셸 프롬프트에서 실행하면, "sys" 모듈의 설명서를 유닉스 **man** 명령
으로 표시되는 매뉴얼 페이지와 비슷한 스타일로 표시합니다. **pydoc**의
인자는 함수, 모듈 또는 패키지의 이름이거나 모듈이나 패키지의 모듈 내의
클래스, 메서드 또는 함수에 대한 점으로 구분된 참조일 수 있습니다.
**pydoc**에 대한 인자가 경로처럼 보이고 (즉, 유닉스의 슬래시와 같이 운
영 체제의 경로 구분 기호가 포함되어 있으면), 기존 파이썬 소스 파일을
가리키면, 해당 파일에 대한 설명서가 생성됩니다.

참고:

  객체와 그들의 설명을 찾기 위해, "pydoc"은 설명할 모듈을 임포트 합니
  다. 따라서, 모듈 수준의 모든 코드는 이때 실행됩니다. 파일이 임포트될
  때가 아니라 스크립트로 호출할 때만 실행되도록 코드를 보호하려면 "if
  __name__ == '__main__':"를 사용하십시오.

출력을 콘솔에 인쇄할 때, **pydoc**은 읽기 쉽도록 출력을 페이지로 나누
려고 합니다. "MANPAGER"나 "PAGER" 환경 변수가 설정되면, **pydoc**은 그
값을 페이지 매김 프로그램으로 사용합니다. 둘 다 설정되면 "MANPAGER"가
사용됩니다.

인자 앞에 "-w" 플래그를 지정하면 콘솔에 텍스트를 표시하는 대신, HTML
설명서가 현재 디렉터리에 파일로 기록됩니다.

인자 앞에 "-k" 플래그를 지정하면 인자로 주어진 키워드에 대해 사용 가능
한 모든 모듈의 개요 행을 검색할 수 있습니다. 역시 유닉스 **man** 명령
과 유사한 방식입니다. 모듈의 개요 행은 설명서 문자열의 첫 행입니다.

**pydoc**을 사용하여 방문하는 웹 브라우저에 설명서를 제공하는 HTTP 서
버를 로컬 시스템에서 시작할 수도 있습니다. **python -m pydoc -p 1234**
는 포트 1234에서 HTTP 서버를 시작해서, 여러분이 선호하는 웹 브라우저에
서 "http://localhost:1234/"의 설명서를 볼 수 있도록 합니다. 포트 번호
로 "0"을 지정하면 사용되지 않는 임의의 포트가 선택됩니다.

**python -m pydoc -n <hostname>**은 주어진 호스트 이름에서 리스닝하는
서버를 시작합니다. 기본적으로 호스트 이름은 'localhost' 이지만 다른 컴
퓨터에서 서버에 도달하도록 하고 싶으면 서버가 응답하는 호스트 이름을
변경해야 할 수 있습니다. 개발 중에 컨테이너 내에서 pydoc을 실행하려는
경우 특히 유용합니다.

**python -m pydoc -b**는 서버를 시작하고 모듈 색인 페이지로 웹 브라우
저를 추가로 엽니다. 제공되는 각 페이지에는 상단에 탐색 바가 있어, 개별
항목에 대한 도움말을 *조회(Get)*하고, 개요 행에 키워드가 있는 모든 모
듈을 *검색(Search)*하고, *모듈 색인(Module index)*, *주제(Topics)* 및
*키워드(Keywords)* 페이지로 이동할 수 있습니다.

**pydoc**이 설명서를 생성할 때, 현재 환경과 경로를 사용하여 모듈을 찾
습니다. 따라서, **pydoc spam**을 호출하면 정확히 파이썬 인터프리터를
시작하고 "import spam"을 입력할 때 얻는 모듈의 버전을 설명합니다.

코어 모듈에 대한 모듈 설명은 "https://docs.python.org/X.Y/library/"에
있다고 가정합니다. 여기서 "X"와 "Y"는 파이썬 인터프리터의 주 버전 번호
와 부 버전 번호입니다. 이는 "PYTHONDOCS" 환경 변수를 다른 URL로 설정하
거나 라이브러리 레퍼런스 매뉴얼 페이지가 있는 로컬 디렉터리로 설정하여
재정의할 수 있습니다.

버전 3.2에서 변경: "-b" 옵션이 추가되었습니다.

버전 3.3에서 변경: "-g" 명령 줄 옵션이 제거되었습니다.

버전 3.4에서 변경: 이제 "pydoc"은 "inspect.getfullargspec()" 대신
"inspect.signature()"를 사용하여 콜러블에서 서명 정보를 추출합니다.

버전 3.7에서 변경: "-n" 옵션이 추가되었습니다.
