import는 꼭 코드 맨 윗줄에 써야 하나요?
조회수 5219회
보통 모듈을 import할 때는 소스코드1보다는 소스코드2같이 맨 윗줄에 넣는 것 같던데
이 클래스안에서만 쓰이는 모듈이라면 굳이 맨 윗줄에 import해 줄 필요는 없을 것 같은데 다들 맨 윗줄에서 import하나요? 더 빨라서 그런걸까요 ?_?
소스코드1
class SomeClass(object):
def not_often_called(self)
from datetime import datetime
self.datetime = datetime.now()
소스코드2
from datetime import datetime
class SomeClass(object):
def not_often_called(self)
self.datetime = datetime.now()
1 답변
-
내부에서 모듈을 import 하는 함수를 여러 번 실행하더라도 모듈은 한 번만 import 되기 때문에
모듈 맨 위에서 import하던, 함수 안에서 import하던 import되는 횟수에는 차이가 없습니다.
그리고 사실, 모듈 맨 위에서 import하면 컴파일러가
LOAD_GLOBAL
하는 반면, 함수 안에서는LOAD_FAST
하기 때문에 함수 안에서 import하는 쪽이 더 빠릅니다.(아래에 수행속도를 비교해놨습니다)그럼에도 맨 위에 모듈을 import하는 이유는 파이썬 스타일 가이드 PEP 08 - Imports가 그렇게 쓰라고 권장하기 때문입니다.
Imports are always put at the top of the file, just after any module comments and docstrings, and before module globals and constants.
맨 위에서 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
댓글 입력