-
[Python] import vs runtime개발/Python 2022. 9. 26. 16:39
Python은 Hybrid 언어로 Interpreter를 이용한 Compile이 동작(import time)하고 난 뒤 Runtime이 동작하게 됩니다.
import time
- import time 시 python 파일의 소스코드를 위에서부터 파싱 및 실행을 위한 Byte code를 만들어줍니다.
- 즉, 파일 내의 Function과 Class method를 제외한 코드들을 실행합니다.
- Interpreter 영역
runtime
- 모든 Code가 실행되는 순간
import time vs runtime
- 이 때 Import와 runtime에 대한 이해가 없다면, 에러를 마주 할 수 있습니다.
- 아래 코드에서 어떤 동작 결과가 예상하여 봅시다.
#a.py import b def function_a(): print('function_a') return b.function_b() function_a()
#b.py import a def function_b(): print('function_b') def function_c(): print('function_c') return a.function_a()
- 실제 결과입니다.
- b만 제대로 동작하고 있습니다.
- a.py가 동작하지 않는 이유를 알기 위해 순차적으로 접근하여 보면, import b -> function_a -> b.function_b() -> b -> a 와 같은 형태로 계속 반복되기 때문에 a,b가 계속 import되는거와 같습니다.
# a.py result function_a Traceback (most recent call last): File "a.py", line 1, in <module> import b line 1, in <module> import a line 9, in <module> function_a() line 6, in function_a return b.function_b() AttributeError: 'module' object has no attribute 'function_b'
# b.py result function_a function_b
- 어떻게 하면 제대로 동작하게 만들 수 있을까요?
- 방법 = Runtime으로 옮겨주면 됩니다.
#b.py def function_b(): print('function_b') def function_c(): import a print('function_c') return a.function_a()
'개발 > Python' 카테고리의 다른 글
[Python] - Requirements (1) 2022.09.26 [Python] - Cyclic reference (0) 2022.09.19 [Python] - Garbage Collection (0) 2022.09.19 [Python] - 동작원리( Build , hybrid ) (0) 2022.09.18 [Python] - Decorator (0) 2022.09.02