[파이썬 Python] 모듈(module) 과 패키지(package)

2020. 12. 20. 16:20python/초급 파이썬

728x90
반응형

1. 모듈 

module


모듈은 여러 기능을 모아둔 파이썬 파일이다.

 

namespace

 

스탠다드 라이브러리

자료형 int float string

print dir 내장함수

유용한 스탠다드 모듈 math, randon, datetime, os, os.path, re, pickle, json, copy 

 

 

 

 

스크립트 vs 모듈


보통 스크립트모듈로 파일을 따로 만들어 쓴다

  • 모듈: 필요한 변수 함수를 정의 모아놓은 파일
  • 스크립트 : 모듈을 import로 가져와서 실행 용도 파일

 

__name__


  • __name__ : 모듈의 이름을 저장해 놓은 변수
  • __main__ : 실행한 파일의 이름은 __name__ = __main__이다. 
    import 된파일은  __name__  =  원래 모듈이름 으로 설정 된다.

if __name__ == '__main__': 을 사용하면  조건문 안에 있는 코드는 파일이 직접실행될 떄만 실행된다.

 

 

 


2. 패키지

package


관련된 여러개의 모듈을 모아 하나의 패키지라 한다.

새로운 폴더를 만들고 폴더안에 __init__.py 파일을 만들어 주면 된다.

파이참(PyCharm)에서는 new -> python package 를 선택하면 되는데 __init__.py 를 자동으로 만들어 준다.

*3.3 이전 버전에서는 필수 3.3 이상에서는 init 파일이 필수가 아니다.

 

사용방법

import packagename.modulename

import packagename.modulename as name

from packagename.modulename import def

from packagename import module

import packagename  ->  패키지 안에 내용들은 import 되지 않는다. 안에 모듈도 같이 import 하려면 init 파일을 사용해야 한다.

 

 

 

__init__.py


import package 를 하면 __init__.py가 먼저 실행된다.

 

__init__.py 파일에

from package명.파일명 import 함수명, 함수명

실행(run) 파일에서 package.file.function() 을써야하는데 더 짧게 package.function() 형태로 쓸수있다.

import package명

package명.함수명()

 

 

상수 constant


각 모듈에서 정의하지 않고 패키지에서 한번만 정의해 준다.

  • 한번만 정의해 주려면 __init__.py 파일에 정의해 주면 된다.
  • __init__.py 에 정의되면 패키지 밖에서도 사용할수 있다.
# 상수를 직접 임포트
from package import constant

constant


or

# 패키지를 임포트
import package

package.constant

 

__all__ 특수변수


* import * 는 네임스페이스를 완벽히 이해했을 때 사용하기를 권장한다.

from package import *

아무 모듈도 import 되지 않는다.

 

 

 

__init__.py 에 __all__ = ['파일명(모듈module)','파일명(모듈module)']  하면 실행 된다.

__all__ = ['파일명','파일명']

 

 

모듈module에서도 사용가능하다. 

__all__ = ['consant', 'function' ]

 

 

3. 서브 패키지

subpackage


사용방법

subpackage1 __init__.py 에 아무것도 안 적었을 시

from package.subpackage1.module import function

from package.subpackage1 import module

import package.subpackage1.module

 

subpackage2 __init__.py 에

from package.subpackage2 import module

from package import subpackage2

import package.subpackage2

 

 

 

절대경로 상대경로


절대경로

from package.subpackage1.module import function

 

상대경로

from .module import function

현재 패키지에서  fuction을 가저와라

 

현재 subpackage1.

from ..subpackage2.module import function

 

 

 

 

 

 

반응형