본문 바로가기

언어/Python

[ Python ] REST API 사용시 디버깅을 위해 외부/직접 호출 구분해서 실행하기

반응형

Python에서 코드가 직접 실행되었을 때와 모듈로 import 되었을 때를 구분하는 방법은 if __name__ == "__main__": 구문을 사용하는 것입니다.

REST API로 호출 시 함수를 직접 import 후 함수를 호출함으로 파일에 포함되어 있는 코드가 실행되지 않습니다.
직접 호출 시에는 파일에 포함된 코드가 실행 됨으로 Local에서 바로 호출해서 실행할 수 있습니다.

🔹 원리

  • __name__ 변수는 Python의 모든 스크립트에서 자동으로 설정됩니다.
  • 스크립트를 직접 실행하면 __name__의 값이 "__main__"이 됩니다.
  • 모듈로 import 되면 __name__은 해당 모듈의 파일명이 됩니다.

🔹 예제

my_module.py (import될 수도 있고, 직접 실행될 수도 있는 파일)

def hello():
    print("Hello, Python!")

# 직접 실행될 때만 실행되는 코드
if __name__ == "__main__":
    print("이 파일이 직접 실행되었습니다.")
    hello()
else:
    print("이 파일이 import 되었습니다.")

실행 결과

1️⃣ 직접 실행 (python my_module.py)

이 파일이 직접 실행되었습니다.
Hello, Python!

2️⃣ 다른 파일에서 import (import my_module)

import my_module
이 파일이 import 되었습니다.

🔹 활용 예시 1

✅ 테스트 코드 분리

def add(a, b):
    return a + b

if __name__ == "__main__":
    # 테스트용 코드 (이 파일을 실행할 때만 실행됨)
    print(add(2, 3))  # 5

다른 파일에서 import하면 add() 함수는 가져오지만, 테스트 코드는 실행되지 않음.

✅ 스크립트 실행 제어

def run():
    print("스크립트 실행 중...")

if __name__ == "__main__":
    run()

터미널에서 실행하면 run()이 실행되지만, 다른 모듈에서 import하면 실행되지 않음.

🔹 활용 예시 2

✅ 테스트 코드 분리

def foreigner_organ_buy(period: int):
    return {"period": period}


if __name__ == '__main__':
    result = foreigner_organ_buy(10)
    print(f"result: {result}")

이 방식을 사용하면 같은 파일을 모듈로 사용할 수도 있고, 독립 실행 프로그램으로 사용할 수도 있어서 Python 코드의 재사용성을 높일 수 있습니다. 🚀

반응형