[Python] Import 는 꼭 맨 윗줄에 써야하는가?

728x90
반응형

 

 

Python 내부에서는 모듈을 import 하는 함수를 여러번 실행하더라도 모듈은 한번만 Import 되기 때문에 사실상 어디서 하던 상관 없다고 한다. 

 

심지어 함수 안에서 모듈을 import 하는 것이 실행속도가 더 빠르다고 한다. 왜냐하면 맨 위에서 컴파일하면 LOAD_GLOBAL 하는 반면, 함수 안에서는 LOAD_FAST 하기 때문에 함수 안에서 Import 하는 것이 더 빠르다고 한다. 그럼에도 불구하고 맨 위에 모듈을 import 하는 이유는 Python 스타일 가이드가 그렇게 쓰라고 권장했기 때문이다. 

 

 

 

 

 

맨 위에서 import 하는 경우

import random

def f():
    L = []
    for i in xrange(1000):
        L.append(random.random())


for i in xrange(1000):
    f()

$ time python import.py

real        0m0.721s
user        0m0.412s
sys         0m0.020s

 

 

함수 안에서 import 하는 경우

def f():
    import random
    L = []
    for i in xrange(1000):
        L.append(random.random())

for i in xrange(1000):
    f()

$ time python import2.py

real        0m0.661s
user        0m0.404s
sys         0m0.008s

 

 

 

 

참고자료 : https://hashcode.co.kr/questions/1054/import%EB%8A%94-%EA%BC%AD-%EC%BD%94%EB%93%9C-%EB%A7%A8-%EC%9C%97%EC%A4%84%EC%97%90-%EC%8D%A8%EC%95%BC-%ED%95%98%EB%82%98%EC%9A%94

 

import는 꼭 코드 맨 윗줄에 써야 하나요?

보통 모듈을 import할 때는 소스코드1보다는 소스코드2같이 맨 윗줄에 넣는 것 같던데이 클래스안에서만 쓰이는 모듈이라면 굳이 맨 윗줄에 import해 줄 필요는 없을 것 같은데 다들 맨 윗줄에서 import하나요? 더 빨라서 그런걸까요 ?_? 소스코드1 class SomeClass(object): def not_often_called(self) from datetime import datetime self.datetime =

hashcode.co.kr

 

728x90
반응형