Practice makes perfect

[Python] 모듈(Module) & 패키지(Package) - in PyCharm 본문

Anaconda/Python

[Python] 모듈(Module) & 패키지(Package) - in PyCharm

kerpect 2020. 7. 28. 10:09

모듈(Module)

: 독자적인 기능을 갖는 구성 요소로 변수, 함수, 클래스 등을 모아 놓은 스크립트 파일입니다. 모듈은 간단한 기능을 담을 때 사용하며, 패키지는 코드가 많고 복잡할 때 사용합니다. 파이썬에서는 각각의 소스 파일을 일컬어 이야기 합니다. 

 

제공자 기준

– 표준 모듈 : 파이썬과 함께 제공되는 모듈

– 사용자 생성 모듈 : 프로그래머가 직접 작성한 모듈

– 서드 파티 모듈 : 다른 프로그래머 or 업체에서 제공한 모듈

 

● 사용자 생성 모듈 - 모듈 만들기 (in PyCharm) 

Python File 을 눌러줍니다. 

 

이름을 넣어주고 enter 를 눌러주면 생성 됩니다. 

 

모듈 안에 변수, 함수, 클래스 등을 넣어줍니다. 

 

 

모듈(Module) – import

 

- 다른 모듈을 현재 모듈로 불러오는 기능
- 다른 모듈 내의 코드에 대한 접근을 가능
- 접근 가능 코드는 변수/ 함수/ 클래스 모두 포함

 

 

① 모듈 사용 ( import )   - 가독성을 높은 방법으로 가장 많이 권고 하는 방법입니다. 

import한 모듈의 이름으로 ( . ) 으로 접근해서 사용하면 됩니다. 

 

결과(console) 

 

가독성을 높은 방법으로 가장 많이 권고 하는 방법이지만 이름이 길어지면 사용하기 불편할 때 as 를 사용하여 기존 모듈에 새이름 부여 사용 가능하도록 합니다. 

 

+ ) import 모듈 이름  as 별칭 

- 가장 많이 사용 합니다. 

 

 

모듈 사용 ( from + import )

from 을 활용하여 함수의 이름으로만 접근하여 사용 가능하게 합니다.

 

결과(console) 

 

 

③ 모듈 사용 ( from + import + ( , ) )  : 콤마( , )를 이용해서 연속적으로 여러 함수(변수) 사용 

결과(console) 

 

④ 모듈 사용( from + import + ( * ) ) : ( * )  모든 함수, 변수 사용할 수 있도록 지원

결과(console) 

<권고하지 않음>

1. 실직적으로 이 코드를 만나면 모든 내용을 읽어와서 배치하는 것과 같으므로 용량을 많이 차지합니다. 
2. 어떤 함수를 사용하고 있는지 명확하지 않습니다. (가독성을 떨어뜨림
)

 

 

● 모듈(Module) 경로 탐색 규칙

 

:  import문을 만나면


1. 파이썬 인터프리터 내장 모듈 검색

 

- sys.builtin_module_names

결과(console) 


2. sys.path에 정의되어 있는 디렉토리 검색


- 파이썬 모듈이 실행되고 있는 현재 디렉토리
- PYTHONPATH 환경변수에 정의되어 있는 디렉토리
- 파이썬과 함께 설치된 기본 라이브러리

 

결과(console) 

실행되고 있는 현재 디렉토리 확인 -> 환경변수 정의된 디렉토리 확인 -> 기본 라이브러리 확인 

 

기본 라이브러리에 넣는 것을 권장 합니다. 하지만 편의에 의해서 실행 되는 디렉토리에 저장을 많이 합니다. 

 

메인 모듈(Main Module)

별도의 메인 함수가 따로 없습니다. 

.py 로 되어 있으면 수행하는 인터프린트 언어입니다. 

- ‘최상위 수준(Top Level)’에서 실행되는 스크립트만 있을 뿐입니다. 
- 최상위 수준 실행 -> 명령 프롬프트 창이나 탐색기를 이용하여 파이썬 모듈을 실행하는 것을 말합니다. 
- 메인 모듈 : 최상위 수준으로 실행되는 스크립트

 

 __name__
- 내장 전역 변수
- 모듈이 최상위 수준으로 실행 될 때 ‘__main__’으로 지정됩니다. 

 

 

하위 모듈(Sub Module)

 

메인 모듈이 import 문을 이용하여 불러오는 모듈

 

__name__
– 모듈 자체의 이름을 담고 있습니다. 

 

 

결과(console) 

 

<sub> 

 

<main> 

결과(console) 

시작하는 모듈에서는 __name__ 에서 __main__으로 출력하고, import 되어 있는  sub  모듈은 이름을 출력합니다. 

 

 

<sub>

결과 < console > 

<main>

결과 <console> 

 

패키지(Package)

: 패키지(package)는 여러 모듈을 묶은 것입니다.  패키지는 기능들이 모듈 여러 개로 잘게 나누어져 있고, 관련된 모듈끼리 폴더에 모여 있는 형태입니다. (모듈의 집합)

 

● 해당 디렉토리가 파이썬의 패키지로 인식되려면

_init_,py 파일을 그 경로에 갖고 있어야 함.

__all__ 변수 조정 : 패키지로부터 반입할 모듈의 목록을 정의하기 위해 사용

 

 

pakage를 완성하면 그 안에 _init_.py 파일이 들어가 있습니다. (반드시 들어가 있습니다.) 

 

 

 

- 폴더의 위치가 다른 모듈의 함수를 호출 ( 다른 페키지 안에 파일 ) 

 

< calculator2 > 

< 06_myPackage > 

결과 ( console ) 

 

 

- 폴더의 위치가 다른 모듈의 함수를 호출( 패키지 안에 패키지 안에 모듈 )

 

< calc > 

< package2 > 

결과 ( console ) 

'Anaconda > Python' 카테고리의 다른 글

[Python] 클래스(Class - 객체지향)  (0) 2020.07.28
[Python] 파이참(PyCharm) 다운로드  (0) 2020.07.28
[Python] 함수  (0) 2020.07.27
[Python] 반복문 (while, for)  (0) 2020.07.27
[Python] 조건문  (0) 2020.07.27