파이썬에서 모듈과 라이브러리의 차이점은 무엇입니까?


87

Java에 대한 배경 지식이 있으며 Python을 처음 사용합니다. 계속 진행하기 전에 Python 용어를 올바르게 이해하고 있는지 확인하고 싶습니다.

모듈 에 대한 나의 이해는 읽기를 쉽게하기 위해 많은 스크립트에서 가져올 수있는 스크립트입니다. Java에서와 마찬가지로 클래스가 있으며 해당 클래스는 다른 많은 클래스에서 가져올 수 있습니다.

라이브러리 에 대한 나의 이해 는 다음과 같습니다. 라이브러리 는 사용에 따라 분리 된 많은 모듈 을 포함 합니다.

내 질문은 : 라이브러리가 패키지와 같은지, 예를 들어라는 패키지가있는 food경우 :

  • chocolate.py
  • sweets.py
  • biscuts.py

food패키지에 포함되어 있습니까?

또는 라이브러리가 패키지를 사용하므로 다른 패키지가있는 경우 drink:

  • milk.py
  • juice.py

패키지에 포함되어 있습니다. 는 library두 개의 패키지를 포함?

또한 API (응용 프로그래밍 인터페이스)에는 일반적으로 계층 구조의 맨 위에있는 라이브러리 집합이 포함됩니다.

  1. API
  2. 도서관
  3. 꾸러미
  4. 기준 치수
  5. 스크립트

그래서 API는 모두 2-5로 구성됩니까?


3
파이썬은 "패키지"라는 용어를 사용하지만 "라이브러리"는 그리 많지 않습니다 (표준 라이브러리는 제외).
John Zwinck 2013-10-05

답변:


79

에서 모듈 - 파이썬 자습서

  • 모듈 :

    모듈은 Python 정의 및 문을 포함하는 파일입니다. 파일 이름은 접미사가 .py추가 된 모듈 이름입니다 .

  • 패키지 :

    패키지는 "점으로 구분 된 모듈 이름"을 사용하여 Python의 모듈 네임 스페이스를 구성하는 방법입니다.

import문에 대한 설명서를 읽으면 더 자세한 내용을 볼 수 있습니다. 예를 들면 다음과 같습니다.

Python에는 모듈 객체 유형이 하나 뿐이며 모듈이 Python, C 또는 다른 것으로 구현되었는지 여부에 관계없이 모든 모듈은이 유형입니다. 모듈을 구성하고 이름 지정 계층을 제공하기 위해 Python에는 패키지 개념이 있습니다.

패키지는 파일 시스템의 디렉토리로, 모듈은 디렉토리 내의 파일로 생각할 수 있지만, 패키지와 모듈이 파일 시스템에서 생성 될 필요가 없기 때문에이 비유를 너무 문자 그대로 받아들이지 마십시오. 이 문서의 목적을 위해 우리는 디렉토리와 파일의 편리한 비유를 사용할 것입니다. 파일 시스템 디렉토리와 마찬가지로 패키지는 계층 적으로 구성되며 패키지 자체에는 일반 모듈과 함께 하위 패키지가 포함될 수 있습니다.

모든 패키지가 모듈이지만 모든 모듈이 패키지는 아니라는 점을 명심하는 것이 중요 합니다. 달리 말하면 패키지는 특별한 종류의 모듈 일뿐입니다. 특히 __path__속성 을 포함하는 모든 모듈 은 패키지로 간주됩니다.

따라서이 용어 module는 특정 엔티티를 나타냅니다. 인스턴스가 module파이썬 프로그램에서 사용 하는 객체 인 클래스입니다 . 또한 이러한 인스턴스가 "생성 된"파일 시스템의 파일을 참조하는데도 사용됩니다.

스크립트 라는 용어 는 목표가 실행되는 모듈을 가리키는 데 사용됩니다. "프로그램"또는 "응용 프로그램"과 같은 의미이지만 일반적으로 단순하고 작은 프로그램 (예 : 최대 수백 줄의 단일 파일)을 설명하는 데 사용됩니다. 스크립트 작성에는 몇 분 또는 몇 시간이 걸립니다.

라이브러리 라는 용어 는 많은 응용 프로그램에서 사용할 수 있도록 설계된 코드 묶음의 일반적인 용어입니다. 특정 응용 프로그램에서 사용할 수있는 몇 가지 일반적인 기능을 제공합니다.

모듈 / 패키지 / 다른 것이 "게시"될 때 사람들은 종종 그것을 라이브러리라고 부릅니다. 종종 라이브러리에는 패키지 또는 여러 관련 패키지가 포함되지만 단일 모듈 일 수도 있습니다.

라이브러리는 일반적으로 특정 기능을 제공하지 않습니다. 즉, "라이브러리를 실행"할 수 없습니다.

API는 컨텍스트에 따라 다른 의미를 가질 수 있습니다. 예를 들면 :

  • DB API버퍼 프로토콜 과 같은 프로토콜을 정의 할 수 있습니다 .
  • 이 응용 프로그램과 상호 작용하는 방법을 정의 할 수 있습니다 (예를 들어 Python/C API)
  • 라이브러리 / 패키지와 관련하여 해당 기능 (함수 / 클래스 / 상수 집합 등)을 위해 해당 라이브러리에서 제공하는 인터페이스입니다.

어쨌든 API는 파이썬 코드 가 아닙니다 . 다소 형식적 일 수있는 설명입니다.


40

패키지모듈 만이 Python에 특정한 잘 정의 된 의미를 갖습니다.

  1. API는 코드의 모음 아닌 그 자체 - 그것은 더 다양한 부분 (보통 라이브러리)이 서로 통신하는 방법 "프로토콜"사양과 같다. 파이썬에는 몇 가지 주목할만한 "표준"API가 있습니다. 예 : DB API

  2. 제 생각에는 라이브러리응용 프로그램 이 아닌 모든 것입니다 . 파이썬에서 라이브러리는 일반적으로 하위 모듈 이있는 모듈 입니다. 도서관의 범위는 매우 변수입니다 - 예를 들어 파이썬 표준 라이브러리는 , 예를 들어 상기 PyPi 단일 목적의 라이브러리가 많이 있기는하지만 (꽤 서브 모듈로) 광대collections.OrderedDict py <2.7 백 포트

  3. 패키지는 일반적인 네임 스페이스에서 파이썬 모듈의 모음입니다. 실제로 하나는 특수한 디렉토리에 여러 파이썬 모듈을 배치하여 생성됩니다.__init__.py 모듈 (파일)이 .

  4. 모듈은 할 의미 파이썬 코드의 단일 파일 가져 오기 . 실제로 꽤 많은 모듈 이 스크립트로 실행되는시기를 감지 하고 그 경우 특별한 작업을 수행 하기 때문에 이것은 약간 단순화되었습니다 .

  5. 스크립트가 될하기위한 것입니다 파이썬 코드의 단일 파일 실행 '기본'프로그램으로.

  6. 여러 파일에 걸쳐있는 코드 집합이있는 경우 스크립트 대신 응용 프로그램 이있을 수 있습니다 .


1

라이브러리 : 모듈 모음입니다.

(라이브러리는 내장 모듈 (C로 작성) + 파이썬으로 작성된 모듈을 포함합니다.)

모듈 : 보다 복잡한 구조를 구성하는 데 사용할 수있는 표준화 된 각 부품 또는 독립 단위 집합입니다.

비공식적 인 언어로 말하기, 모듈을 피하기 건조, 특정 목적을 위해 사용되며, 그대로 다른 프로그램에서 사용할 수있는 코드 라인의 설정 ( D on't R은 EPEAT Y 팀과에 초점을 해결할를) 주요 요구 사항. 출처

API 는 다른 애플리케이션이 직접 액세스하지 않고도 라이브러리와 상호 작용할 수있는 인터페이스입니다.

꾸러미 는 기본적으로 파일이있는 디렉토리입니다.

스크립트 는 단일 파일 내에있는 일련의 명령을 의미합니다.


0

저는 초보 초보자들이 사용하는 용어를 사용하지 않고 이에 대해 대답하고, 용어의 가장 "공식적인"및 / 또는 가장 이해되거나 통일 된 사용과 함께 그들이 다르게 사용 된 이유 또는 방법을 설명 할 것입니다.

그것은 혼란 스러울 수 있고, 나는 열심히 생각하는 것을 혼란스럽게 만들었으므로 그것에 대해 많이 생각하지 마십시오. 어쨌든 컨텍스트는 매우 중요합니다.

도서관 -대부분의 경우 유사한 형식과 용도로 생성 된 일반 도서관 또는 다른 컬렉션을 참조합니다. 일반 라이브러리는 '표준', 인기 있고 널리 사용되는 모듈의 합계이며, 마녀는 현재로서는 단일 파일 도구로 생각할 수 있으며 작업을 가능하거나 빠르게 만드는 지름길로 생각할 수 있습니다. 일반 라이브러리는 대부분의 사람들이 Python을 설치할 때 활성화하는 옵션입니다. "Python General Library"라는 이름을 가지고 있기 때문에 유사한 구조와 아이디어로 자주 사용됩니다. Witch는 단순히 일련의 모듈, 어쩌면 함께 그룹화 된 패키지, 일반적으로 목록을 갖는 것입니다. 목록은 일반적으로 다운로드하는 것입니다. 일반적으로 관심사가 비슷한 관련 파일입니다. 그것이 그것을 설명하는 가장 쉬운 방법입니다.

모듈 - 모듈 은 파일을 참조합니다. 파일에는 '내부'스크립트가 있고 파일 이름은 모듈 이름이고 Python 파일은 .py로 끝납니다. 모든 파일에는 함수, 문자열 등을 사용하여 함께 실행되는 코드가 있습니다. 가장 자주 볼 수있는 주요 모듈은 다른 파일 / 모듈에서 정보를 얻을 수있는 특수 모듈이기 때문에 인기가 있습니다. 파일과 모듈의 이름이 같고 .py를 드롭하기 때문에 혼란 스럽습니다. 실제로는 누군가가 무언가를 더 쉽고 가능하게 만들기 위해 작성한 바로 ​​가기로 사용할 수있는 코드 일뿐입니다.

패키지 -상황에 따라 다르지만 일반적으로 때때로 사용되는 용어입니다. 내 경험상 가장 일반적인 용도는 함께 그룹화 된 여러 모듈 (또는 파일)입니다. 그들이 함께 그룹화되는 이유는 몇 가지 이유가있을 수 있습니다. 이것이 내가 패키지 라는 용어를 알게 된 방법입니다.익숙한. 다운로드, 생성 및 / 또는 저장된 모듈의 그룹입니다. 모두 사실 일 수도 있고 1 일 수도 있지만 실제로는 다른 파일을 참조하는 파일 일 뿐이며 올바른 구조 또는 형식이어야하며 전체 합계는 패키지 자체이거나 설치되었거나 파이썬 일반 라이브러리. 패키지는 모듈 (.py 파일)을 포함 할 수 있습니다. 모듈은 서로 의존하고 때로는 제대로 작동하지 않거나 전혀 작동하지 않을 수 있기 때문입니다. 패키지의 모든 부분 (모듈 / 파일)에는 항상 공통된 목표가 있으며 모든 부분의 총합은 패키지 자체입니다.

대부분의 경우 Python 패키지는 모듈입니다. 패키지 이름은 모든 조각을 연결하는 데 사용되는 모듈의 이름이기 때문입니다. 따라서 패키지가 모듈이기 때문에 입력 할 수 있고, 특정 기능 만 수행하기 때문에 패키지가 아닌 다른 모듈을 호출 할 수도 있습니다. 또는 태스크가 다른 파일을 포함하지 않습니다. 패키지에는 목표가 있으며 각 모듈은 최종 목표를 달성하기 위해 함께 작동합니다.

대부분의 혼란은 모듈 이름으로 사용 된 후 다시 패키지 이름으로 사용되는 간단한 파일 파일 이름 또는 파일의 접두사에서 발생합니다.

모듈 및 패키지를 설치할 수 있음을 기억하십시오. 라이브러리는 일반적으로 모듈 및 패키지 그룹을 나열하거나 형식화하는 일반적인 용어입니다. Pythons 일반 라이브러리와 매우 유사합니다. 계층 구조는 작동하지 않고 API는 실제로 속하지 않으며 스크립트, 모듈 및 패키지를 포함하는 모든웨어가 어디에나있을 수 있습니다. worl 라이브러리는 이러한 일반적인 단어이므로 많은 것에 쉽게 적용 할 수 있으며 API를 사용할 수 있습니다. 그 위 또는 아래에 앉을 수 있습니다. 일부 모듈은 다른 코드를 기반으로 할 수 있으며 순수한 Python 관련 토론과 관련이 있다고 생각하는 유일한 시간입니다.

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