모듈(module) : 각종 변수, 함수, 클래스를 담고 있는 파일이다. 특정 기능을 .py 파일 단위로 작성한 것
패키지(package) : 여러 모듈을 묶은 것이다. 패키지는 모듈에 네임스페이스(namespace, 이름공간)를 제공한다.
파이썬 표준 라이브러리(Python Standard Library, PSL) : 파이썬에 기본으로 설치된 모듈과 패키지, 내장 함수
모듈을 여러 개 가져올 때는 모듈을 콤마로 구분한다.
import 모듈
import 모듈1, 모듈2
모듈.변수
모듈.함수()
모듈.클래스()
import 모듈 as 이름
from import로 원하는 변수, 함수 , 클래스만 가져올 수 있다.
from 모듈 import 변수
from 모듈 import 변수, 함수, 클래스
from import는 모듈의 모든 변수, 함수, 클래스를 가져올 수도 있다.
from 모듈 import *
뒤에 as를 붙여 원하는 이름을 지정할 수 있다.
from 모듈 import 변수 as 이름
from 모듈 import 변수 as 이름1, 함수 as 이름2, 클래스 as 이름3
del로 해제하기
>>> import math
>>> del math
importlib.reload로 다시 가져오기
>>> import importlib
>>> import math
>>> importlib.reload(math)
모듈 가져오기에서 모듈 앞에 패키지. 만 적어주면 된다.
import 패키지.모듈
import 패키지.모듈1, 패키지.모듈2
패키지.모듈.변수
패키지.모듈.함수()
패키지.모듈.클래스()
import 패키지.모듈 as 이름
모듈 가져오기와 방법이 동일하다.
from 패키지.모듈 import 변수
from 패키지.모듈 import 변수, 함수, 클래스
패키지의 모듈에서 모든 변수, 함수, 클래스를 가져오기
from 패키지.모듈 import *
from import로 패키지의 모듈의 일부를 가져온 뒤 이름 지정하기
from 패키지.모듈 import 변수 as 이름
from 패키지.모듈 import 변수 as 이름, 함수 as 이름, 클래스 as 이름
파이썬 표준 라이브러리(Python Standard Library, PSL) 이외에도 파이썬 패키지 인덱스(Python Package Index, PyPI)를 통해 다양한 패키지를 사용할 수 있다.
명령만 입력하면 원하는 패키지를 인터넷에서 다운로드하여 설치해주며, 관련된 패키지(의존성)까지 자동으로 설치해주므로 편리하다.
pip는 파이썬 패키지 인덱스의 패키지 관리 명령어다.
리눅스와 macOS에서는 콘솔(터미널)에서 다음과 같은 방법으로 설치한다. (Windows용 파이썬에는 기본으로 내장되어 있다.)
$ curl -O https://bootstrap.pypa.io/get-pip.py
$ sudo python3 get-pip.py
만약 리눅스에 curl이 설치되어 있지 않다면 설치해준다.
우분투 : $ sudo apt-get install curl
pip install 패키지
Windows : 명령 프롬프트(cmd)로 실행
리눅스, macOS : 콘솔(터미널)로 실행
파이썬 코드에서 패키지를 사용하기
import 패키지
>>> import requests # pip로 설치한 requests 패키지를 가져옴
>>> r = requests.get('http://www.google.co.kr') # requests.get 함수 사용
>>> r.status_code
200
2의 거듭제곱을 구하는 모듈 square2
# square2.py 파일명
# 스크립트 파일에서 확장자 .py를 제외하면 모듈 이름이 됨
base = 2 # 변수
def square(n): # 함수
return base ** n
import 모듈
모듈.변수
모듈.함수()
# main.py 모듈을 실행하는 파일과 모듈 파일은 같은 폴더에 있어야 함
import square2 # import로 square2 모듈을 가져옴
print(square2.base) # 모듈.변수 형식으로 모듈의 변수 사용
print(square2.square(10)) # 모듈.함수() 형식으로 모듈의 함수 사용
# 실행 결과
2
1024
from import로 변수와 함수를 가져온 뒤 모듈 이름을 붙이지 않고 사용할 수 있다.
from 모듈 import 변수, 함수
>>> from square2 import base, square
>>> print(base)
2
>>> square(10)
1024
class Person: # 클래스
def __init__(self, name, age, address):
self.name = name
self.age = age
self.address = address
def greeting(self):
print('안녕하세요. 저는 {0}입니다.'.format(self.name))
import 모듈
모듈.클래스()
로 사용한다.
main.py
import person # import로 person 모듈을 가져옴
# 모듈.클래스()로 person 모듈의 클래스 사용
maria = person.Person('마리아', 20, '서울시 서초구 반포동')
maria.greeting()
# 실행 결과
안녕하세요. 저는 마리아입니다.
from import로 클래스를 가져온 뒤 모듈 이름을 붙이지 않고 사용할 수 있다.
from 모듈 import 클래스
>>> from person import Person
>>> maria = Person('마리아', 20, '서울시 서초구 반포동')
>>> maria.greeting()
안녕하세요. 저는 마리아입니다.
if __name__ == '__main__':
코드
이 코드는 현재 스크립트 파일이 실행되는 상태를 파악하기 위해 사용한다.
__name__은 모듈의 이름이 저장되는 변수이며 import로 모듈을 가져왔을 때 모듈의 이름이 들어간다. 하지만 파이썬 인터프리터로 스크립트 파일을 직접 실행했을 때는 모듈의 이름이 아니라 '__main__'이 들어간다.
import로 모듈을 가져오면 해당 스크립트 파일이 한 번 실행된다.
hello.py의 __name__ 변수에는 'hello'가 들어가고,
main.py의 __name__ 변수에는 '__main__'이 들어간다.
어떤 스크립트 파일이든 파이썬 인터프리터가 최초로 실행한 스크립트 파일의 __name__에는 '__main__'이 들어간다. 이는 프로그램의 시작점(entry point)이라는 뜻이다.
파이썬은 최초로 시작하는 스크립트 파일과 모듈의 차이가 없다. 그래서 __name__ 변수를 통해 현재 스크립트 파일이 시작점인지 모듈인지 판단한다.
모듈은 스크립트 파일이 한 개지만 패키지는 폴더(디렉터리)로 구성되어 있다.
__init__.py 파일의 내용은 비워 둘 수 있다.
다음은 calcpkg의 구성이다.
스크립트 파일에서 패키지를 import해 사용한다.
import 패키지.모듈
패키지.모듈.변수
패키지.모듈.함수()
패키지.모듈.클래스()
or
from 패키지.모듈 import 변수
from 패키지.모듈 import 함수
from 패키지.모듈 import 클래스
import 패키지 형식으로 패키지만 가져와서 모듈을 사용할 수 있다. .(점)은 현재 패키지라는 뜻이다.
from . import 모듈
그러려면 해당 패키지의 __init__.py 파일을 다음과 같이 수정해야 한다.
from . import 모듈1 # 현재 패키지에서 모듈1를 가져옴
from . import 모듈2 # 현재 패키지에서 모듈2를 가져옴
패키지의 __init__.py파일에서 아래와 같이 작성해야 패키지를 가져오는 스크립트에서 패키지.함수() 형식으로 사용할 수 있다.
🙆♀️ from .모듈 import 변수, 함수, 클래스
이렇게 작성해야 __init__.py에서 모듈 안의 함수를 가져온다.
🙆♀️ from .모듈 import *
이렇게 작성해도 된다.
🙅♀️ from 패키지 import *
이렇게 작성하면 __init__.py에서 모듈만 가져왔을 뿐 모듈 안의 함수는 가져오지 않아 에러가 발생한다.