본문 바로가기

Python/공부공부

[Python] top-level 코드 ( import시점 & runtime 시점 )

 

파이썬에서 top-level 코드 해당 모듈의 import 시점에, 단 한 번만 실행된다.

* top-level 코드 : 함수/클래스 밖의 모듈. ( if 분기문, for 반복문, print 등 포함 )

 

(config.py)

from datetime import datetime

print(f"===import 시점 실행===")
NOW = datetime.now()			# top-level 코드
print(f"[config.py] NOW(import): {NOW}")
print(f"===import 시점 실행===")

def get_current_time():			# top-level 코드
    global NOW
    return NOW



(main.py)

from config import get_current_time
from datetime import datetime

print("[main.py] 실행")
NOW = get_current_time()
print(f"[main.py] NOW(runtime): {datetime.now()}")
print(f"[main.py] NOW(runtime2): {NOW}")

 

 

( python main.py 출력결과 )

===import 시점 실행===
[config.py] NOW(import): 2025-05-05 19:36:59.222294
===import 시점 실행===
[main.py] 실행
[main.py] NOW(runtime): 2025-05-05 19:36:59.222854
[main.py] NOW(runtime2): 2025-05-05 19:36:59.222294

config.py파일의 import 시점 => top-level code 실행
- 전역변수 NOW 값 세팅.
- get_current_time() 함수 정의. (실행은 함수 호출 시)

config.py파일의 runtime 시점 => main.py 실행( get_current_time() 함수 호출)
- import 시점에 세팅된 전역변수 NOW 값 print.


 

*** 주의 *** 
top-level 변수는 import 시점 기준으로 고정.
def나 class는 정의만! 실행은 호출 시점에!

 

os 체크를 top-level 코드 영역에서 if분기 처리했더니 원하는 결과가 나오지 않았는데 
import시점에 이미 분기처리 완료된 값으로 고정되어 있어서였다.
파이썬 모듈의 import 시점 / runtime 시점 이해하기 **