점프 투 파이썬 - 모듈
Language/Python

점프 투 파이썬 - 모듈

뉴비뉴 2019. 7. 12.

모듈이란 함수나 변수 또는 클래스를 모아 놓은 파일이다.

모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이라고도 할 수 있다.

모듈 만들기

# C:\doit\mod1.py
def add(a,b):
	return a + b
    
def sub(a,b):
	return a - b

모듈 불러오기

>>> import mod1 # mod1.py 를 가져와라
>>> print(mod1.add(3,4)) # mod1.py 에 있는 def add(a,b)에 값을 넣고 출력하라
7
>>> print(mod1.sub(4,2))
2

# import 모듈이름 # 여기에서 모듈 이름은 mod1.py 에서 .py를 제거한 mod1만을 가리킨다.
# 때로는 mod1.add, mod1.sub 처럼 쓰지 않고 add, sub 처럼 모듈 이름 없이 함수 이름만 쓰고 싶은
# 경우도 있을 것이다. 이럴 때는 "from 모듈 이름 import 모듈 함수" 를 사용하면 된다.

※ import는 현재 디렉터리에 있는 파일이나 파이썬 라이브러리가 저장된 디렉터리에 있는 모듈만 불러올 수 있다.

파이썬 라이브러리는 파이썬을 설치할 때 자동으로 설치되는 파이썬 모듈을 말한다.

from 모듈이름 import 모듈함수

위 형식을 사용하면 모듈 이름을 붙이지 않고 바로 해당 모듈 함수를 쓸 수 있다.

>>> from mod1 import add
>>> add(3, 4)
7

하지만 add와 sub를 같이 사용하고 싶으면 어떻게 해야될까?
>>>from mod1 import add, sub와 같이 설정해주거나
>>>from mod1 import * 해주면 된다.

if __name__ "__main__": 의 의미

# mod1.py
def add(a,b):
	return a+b
    
def sub(a,b):
	return a-b
    
print(add(1,4))
print(sub(4,2))

mod1 을 실행하면 결과는 
5
2
가 출력된다, 그런데 이 mod1.py 파일의 add와 sub 함수를 사용하기 위해 mopd1 모듈을
import 할 때는 좀 이상한 문제가 생긴다.

C:\Users\pahkey> cd C:\doit
C:\doit> python
Type "help", "copyright", "credits" or "license" for more information.
>>> import mod1
5
2

엉뚱하게도 import mod1을 수행하는 순간 mod1.py 가 실행이 되어 결과값을 출력한다.

우리는 단지 mod1.py 파일의 add와 sub 함수만 사용하려고 했는데 말이다

 

이러한 문제를 방지하려면 mod1.py 파일을 다음처럼 변경해야 한다.

# mod1.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))

if __name__ == "__main__"을 사용하면 C:\doit>python mod1.py 처럼 직접 이 파일을 실행했을 때는

__name__ == "__main__" 이 참이 되어 if문 다음 문장이 수행된다. 반대로 대화형 인터프리터나 다른 파일에서 이 모듈을 불러 사용할 때는 거짓이 되어 if문 다음 문장이 수행되지 않는다.

 

[__name__] 변수란?

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

 

댓글

💲 추천 글