About Python – “모듈(2) – if __name__ == “__main__”: ”

About Python – “모듈(2) – if __name__ == “__main__”: ”

1월 22, 2022

파이썬에서 모듈을 불러오면 일어나는 일

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 모듈을 importb.py 파일을 실행하면 당연히 a.py 파일이 자동으로 실행됩니다. 결과는 “name변수 = a” 와 같이 나오는 것을 알 수 있습니다. 둘째,__name__변수는 모듈의 이름이 저장되는 변수입니다.

파이썬의 __main__ 의미

이번에는 지금까지 모듈로 사용되어 왔던, a.py파일을 바로 실행해 보겠습니다.

name변수 = main” 이라는 결과가 나옵니다. 셋째, 파이썬 인터프리터가 실행하는 첫 번째 스크립트 파일의 __name__ 변수에는 __main__ 이라는 값이 들어갑니다.

파이썬의 if __name__ == "__main__": 의미

if __name__ == "__main__": 의 의미는 무엇일까요?

위의 b.py의 경우에서처럼 a 모듈을 불러오면 a 모듈이 바로 실행되는 문제가 있었습니다. a.pyb.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__": 이라는 코드를 사용함으로서 우리는 해당 파일을 스크립트로서(바로 실행하여 사용하는) 사용할 수도 있고, 모듈로서도 사용할 수 있습니다.

2 Comments

  1. Mark 2022-09-08 at 9:40 오전 - Reply

    Thanks for your blog, nice to read. Do not stop.

Leave A Comment

Avada Programmer

Hello! We are a group of skilled developers and programmers.

Hello! We are a group of skilled developers and programmers.

We have experience in working with different platforms, systems, and devices to create products that are compatible and accessible.