카테고리 없음

[Python] 파이썬에서 if __name__ == "__main__"의 의미와 사용법

BlockDMask 2025. 3. 15. 23:00
반응형

안녕하세요. BlockDMask 입니다.
오늘은 파이썬에서 자주 보이는 if __name__ == "__main__"의 의미와 활용법에 대해 알아보겠습니다.
초보자들이 처음 보면 이해하기 어려울 수 있는 개념이지만, 알고 나면 코드의 실행 흐름을 명확하게 제어할 수 있습니다.

 


1. if __name__ == "__main__"이란?

파이썬에서 if __name__ == "__main__"은 특정 스크립트가 직접 실행될 때만 코드가 실행되도록 하는 조건문입니다.

쉽게 말해, 해당 스크립트가 독립적인 프로그램으로 실행될 때만 특정 코드 블록을 실행하도록 해주는 역할을 합니다.

 


2. 기본 사용법

다음과 같은 파이썬 코드가 있다고 가정해보겠습니다.

# example.py
def hello():
    print("Hello, Python!")

if __name__ == "__main__":
    hello()

이 파일을 직접 실행하면 다음과 같은 출력이 나옵니다.

Hello, Python!

그런데 만약 이 파일을 다른 파일에서 import하면 어떻게 될까요?

# another_script.py
import example

이 경우, example.py 내부의 hello() 함수는 실행되지 않습니다.
이유는 if __name__ == "__main__" 조건이 직접 실행될 때만 참이 되기 때문입니다.

 


3. __name__ 변수의 역할

파이썬에서 __name__이라는 내장 변수는 현재 실행 중인 파일의 모듈 이름을 담고 있습니다.

# example.py
print(__name__)

이 파일을 직접 실행하면 출력값은 다음과 같습니다.

__main__

하지만 import하여 실행하면 example이 출력됩니다.

# another_script.py
import example
example

즉, if __name__ == "__main__"을 사용하면 특정 코드가 직접 실행될 때만 동작하고, import될 경우 실행되지 않도록 만들 수 있습니다.

 


4. 실전 활용 예제

1) 독립 실행 프로그램과 모듈을 구분할 때

예를 들어, 특정 기능을 포함한 파일을 만들고 이를 직접 실행할 수도 있고, 다른 파일에서 모듈로 불러올 수도 있다고 가정해 봅시다.

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

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

if __name__ == "__main__":
    print("직접 실행됨: ", add(3, 4))
# main.py
import calculator

print("모듈에서 불러옴: ", calculator.add(3, 4))

calculator.py를 직접 실행하면 직접 실행됨: 7이 출력되지만,
main.py에서 불러오면 출력되지 않습니다.

 

2) 유닛 테스트 코드 작성 시

테스트 코드를 같은 파일에 포함할 경우,
if __name__ == "__main__"을 사용하면 테스트 코드가 모듈로 import될 때 실행되지 않도록 할 수 있습니다.

# test_example.py
def test_function():
    assert 2 + 2 == 4
    print("테스트 통과!")

if __name__ == "__main__":
    test_function()

 

 


5. 결론

✅ if __name__ == "__main__"을 사용하면 독립 실행과 모듈 사용을 구분할 수 있습니다.
✅ 다른 파일에서 import할 때 불필요한 코드 실행을 방지할 수 있습니다.
✅ 스크립트 실행과 테스트 코드 실행을 명확히 제어할 수 있습니다.

이제 여러분도 if __name__ == "__main__"을 적절히 활용하여 깔끔한 파이썬 코드를 작성해 보세요! 😊

 


이상, 파이썬에서 if __name__ == "__main__"의 의미와 사용법에 대해서 적어보았습니다.
오늘도 읽어주셔서 감사합니다!

반응형