About Python – “모듈(2) – if __name__ == “__main__”: ”
About Python – “모듈(2) – if __name__ == “__main__”: ”
파이썬에서 모듈을 불러오면 일어나는 일
print("안녕하세요? 모듈 a입니다.")
import a
# 안녕하세요? 모듈 a입니다.
a.py
라는 파일과 b.py
라는 파일을 위의 내용으로 생성하고 b.py
파일을 실행해 봅시다.
b.py
에서 단지 import a
라는 코드를 써놓았을 뿐인데, a.py
의 코드가 실행되는 것을 알 수 있습니다. 첫 번째, 파이썬에서 모듈을 불러오면 그 스크립트 파일이 한 번 실행됩니다.
파이썬의 __name__
변수
a.py
파일을 아래와 같이 수정한 다음, b.py
파일을 실행해 봅시다.
print(__name__변수 =", __name__)
a
모듈을 import
한 b.py
파일을 실행하면 당연히 a.py
파일이 자동으로 실행됩니다. 결과는 “name변수 = a
” 와 같이 나오는 것을 알 수 있습니다. 둘째,__name__
변수는 모듈의 이름이 저장되는 변수입니다.
파이썬의 __main__
의미
이번에는 지금까지 모듈로 사용되어 왔던, a.py
파일을 바로 실행해 보겠습니다.
” name변수 = main
” 이라는 결과가 나옵니다. 셋째, 파이썬 인터프리터가 실행하는 첫 번째 스크립트 파일의 __name__
변수에는 __main__
이라는 값이 들어갑니다.
파이썬의 if __name__ == "__main__":
의미
if __name__ == "__main__":
의 의미는 무엇일까요?
위의 b.py
의 경우에서처럼 a
모듈을 불러오면 a
모듈이 바로 실행되는 문제가 있었습니다. a.py
와 b.py
파일을 아래와 같이 변경해 보겠습니다.
def mult(x,y):
return x*y
def div(x,y):
return x/y
print("두 수의 곱 =", mult(4,3))
print("첫 번째 수 나누기 두 번째 수 =", div(3,2))
from a import *
# a 모듈에 있는 함수를 이용하기 위하여 모듈을 불러옴
print("두 수의 곱 =",mult(55,21))
print("첫 번째 수 나누기 두 번째 수=",div(11,654))
아래의 b.py
파일을 실행해 봅시다. 결과는 a
모듈에 있는 print()
함수마저 실행된 값이 나올 텐데, 이것은 제가 원하는 결과가 아닙니다. 원하는 것은 a.py
에 있는 함수만 가져오는 것입니다.
이제 문제의 코드를 a.py
에 추가해 보겠습니다.
def mult(x,y):
return x*y
def div(x,y):
return x/y
if __name__ == "__main__":
print("두 수의 곱 =", mult(4,3)) # 들여쓰기 필수!
print("첫 번째 수 나누기 두 번째 수 =", div(3,2))
if __name__ == "__main__":
의 의미는 만약, 해당 파일 내의 __name__
변수가 __main__
과 같으면, 아래의 코드를 실행하겠다는 것입니다. 바로 a.py
파일을 실행해 보겠습니다.
두 수의 곱 = 12
첫 번째 수 나누기 두 번째 수 = 1.5
이 결과가 나오는 이유는 파이썬 인터프리터는 a.py
스크립트를 맨 처음 실행하므로 __name__
변수 안에는 당연히 __main__
이라는 값이 들어가게 되기 때문에 아래의 코드가 실행된 것입니다.
그러면 b.py
를 실행해 보겠습니다.
두 수의 곱 = 1155
첫 번째 수 나누기 두 번째 수= 0.016819571865443424
이 결과가 나오는 이유는 a.py
를 모듈로 사용하였기 때문에 __name__
변수 안에 a라는 값이 들어갔고, 조건식이 거짓이 되어 아래의 문장이 실행되지 않았기 때문입니다.
if __name__ == "__main__":
이라는 코드를 사용함으로서 우리는 해당 파일을 스크립트로서(바로 실행하여 사용하는) 사용할 수도 있고, 모듈로서도 사용할 수 있습니다.
Thanks for your blog, nice to read. Do not stop.
thanks :D