[Python] 모듈

ㅎㅎ·2021년 5월 23일
0

Python

목록 보기
17/27




📌 모듈

  • 모듈이란 함수나 변수 또는 클래스를 모아 놓은 파일을 말한다. 즉, 다른 파이썬 프래그램에서 불러와 사용할 수 있는 파이썬 파일이다.
  • 프로그래밍을 할때 다른 사람이 이미 만든 모듈을 사용할 수도, 직접 만들어서 사용할수 도 있다.

- 모듈 만들기

#pp.py
def add(a,b):
    return a+b

def sub(a,b):
    return a-b
    
#파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈

- 모듈 불러오기

  • pp.py 을 저장한 '디렉토리'에서 대화형 인터프리터(python 셸)를 실행한 후에 모듈을 불러온다.

1. import 모듈이름

>>> import pp
>>> print(pp.add(3,4)) #모듈.함수이름
7
>>> print(pp.sub(4,2))
2

2. from 모듈이름 import 함수이름

>>> from pp import add
>>> add(3,4)
7
# 두가지 이상 함수를 가져오고 싶을 때,
>>> from pp import add, sub # 필요한 함수만 가져오기
>>> from pp import * # 모든 함수 가져오기 

- if name == "main":

#pp.py
def add(a,b):
    return a+b

def sub(a,b):
    return a-b

#결과를 출력하는 코드 추가 
print(add(1,4))
print(sub(4,2))
#  python 셸 열고 실행,
>>> import pp
5
2

➡️ 위의 모듈을 대화형 인터프리터형에서 import pp 실행하면 pp.py가 실행되어 결과값 5,2가 나온다. 따라서 pp.py파일에 있는 add와 sub함수를 사용하려면 if __name__ == "__main__"를 사용해야한다.

#pp.py
def add(a,b):
    return a+b

def sub(a,b):
    return a-b

if __name__ == "__main__": #추가
    print(add(1, 4))
    print(sub(4, 2))
#python 셸 열고 실행하면 아무것도 출력되지 않음!
>>> import pp
>>> 

➡️ if __name__ == "__main__"를 넣고 실행을 하면 python pp.py를 실행했을때는 __name__ == "__main__"이 참이 되어 if문 다음 문장이 수행된다. 하지만 대화형 인터프리터나 다른파일 모듈을 불러서 사용할때는 __name__ == "__main__"가 거짓이 되어 if문이 수행되지 않는다.

__name__ 변수

  • 파이썬의 __name__변수는 파이썬이 내부적으로 사용하는 특별한 변수 이름이다. 만약 ~ python pp.py처럼 직접 pp.py파일을 실행할 때는 pp.py의 __name__변수에 __main__이 저장된다. 하지만 파이썬 셸이나 다른 파이썬 모듈에서 pp.py을 import 할 경우에는 pp.py의 __name__변수에는 pp.py의 모듈 이름인 pp가 저장된다.

- 클래스나 변수 등을 포함한 모듈

  • 모듈은 함수뿐만 아니라 클래스나 변수를 포함할 수 있다.
#pp.py

PI = 3.141592

class Math: #원의 넓이를 계산하는 클래스
    def solv(self, r): 
        return PI * (r ** 2) 

def add(a, b):  # 두 값을 더하는 함수
    return a+b 
# 이 부분 더 공부하기ㅣ 
>>> import pp #모듈 불러오기
>>> print(pp.PI) # 변수 사용
3.141592

>>> a = pp.Math() #pp.py에 있는 클래스 사용, 모듈안의 클래스를 사용할때 .연산자 사용
>>> print(a.solv(2))
12.566368

>>> print(pp.add(pp.PI,4.4)) # add함수도 사용가능. pp.PI는 객체변수????
7.5415920000000005
>>> 

- 다른 파일에서 모듈 불러오기

  • 대화형 인터프리터한 것처럼 파이썬 파일에서 다른 파이썬 파일을 불러올 수 있다. (단, 동일한 디렉터리에 있어야함)
#p.py 

import pp #파이썬 파일에서도 import로 모듈을 불러올 수 있음
result = pp.add(3,4)
print(result)
  • 모듈을 저장한 디렉토리에 이동하지 않아도 다른 디렉토리에 있는 모듈을 불러오는 방법이 있다. 먼저 pp.py 파일을 ~/mymod라는 폴더에 옮긴다.

1. sys.path.append(모듈을 저장한 디렉토리) 사용하기

>>> import sys
>>> sys.path # 파이썬 라이브러리가 설치되어 있는 디렉토리 위치를 보여줌. 
['', 'C:\\Windows\\SYSTEM32\\python37.zip', 'c:\\Python37\\DLLs', 
'c:\\Python37\\lib', 'c:\\Python37', 'c:\\Python37\\lib\\site-packages'] 

>>> sys.path.append("모듈이 저장되어 있는 폴터 경로")
>>> sys.path # 확인하면 경로가 추가됨 

>>> import pp
>>> print(pp.add(3,4))
7

➡️ pp.py 파일이 다른 디렉토리에 있지만 불러와서 사용할 수 있다.

2. PYTHONPATH 환경 변수 사용하기

>export PYTHONPATH=디렉토리경로
>python
>>> import pp
>>> print(pp.add(3,4))
7

➡️ 책에는 set명령어를 사용하라고 했지만 파일을 못 찾아서export 명령어를 사용해 다른 디렉토리에 있는 pp.py을 불러와서 사용했다. 참고한 블로그

+) 추가적으로 설명 : 모듈, 패키지 불러오기

0개의 댓글