기록을 위해 파이썬 학습 매뉴얼에서 발췌한 내용입니다.
클라이언트는 import 또는 from 문을 실행할 수 있습니다. 모듈이 로드되지 않으면, 이 문들은 모듈 파일 프로그램을 검색, 컴파일, 실행합니다. 주요 차이점은 임포트가 모듈 전체를 읽기 때문에 변수 이름을 읽기 전에 모듈을 정의해야 한다는 점입니다; From 는 모듈별 변수 이름을 얻거나 복사합니다.
import는 변수 이름이 전체 모듈 객체를 참조하게 하므로, 모듈의 속성은 모듈 이름(예: module1.printer)에서 얻어야 합니다. 그리고 from은 변수 이름을 다른 범위로 복사하여, 모듈(예: 프린터)을 거치지 않고 복사된 변수 이름을 스크립트에서 직접 사용할 수 있습니다.
FROM 문장은 네임스페이스를 깨뜨릴 잠재력을 가지고 있습니다. 만약 from을 사용해 변수를 가져오고, 그 변수들이 스코프 내에 기존 변수와 중복되어 있다면, 그 변수들은 조용히 덮어써집니다. 임포트 문장을 사용할 때는 모듈 이름에서 그 내용을 얻어야 하므로 문제가 되지 않습니다. 하지만 from을 사용할 때는 실제로 큰 문제가 되지 않습니다. 특히 변수 이름을 명확히 나열한다면(예: 모듈에서 x, y, z) 임포트 변수 이름을 명확히 나열하면 더욱 그렇습니다.
반면, reload 호출과 함께 사용할 때는 from 문이 심각한 문제가 있는데, 가져오기 변수 이름이 객체의 이전 버전을 참조할 수 있기 때문입니다. 더불어, 모듈 import *의 폼은 네임스페이스를 깨뜨려 변수 이름을 이해하기 어렵게 만들 수 있으며, 특히 여러 파일을 가져올 때 더욱 그렇습니다.
좀 더 실용적인 제안은 단순 모듈들이 일반적으로 from보다는 import를 사용하는 경향이 있다는 것입니다. 대부분의 from 문장은 원하는 변수를 명시적으로 열거하는 데 사용되며, 파일당 *에서 온 형태를 한 번만 사용할 수 있습니다. 이렇게 하면 정의되지 않은 변수 이름도 *에서 참조된 모듈에 존재한다고 간주할 수 있습니다. 같은 변수 이름 변수를 두 개의 다른 모듈에서 사용해야 할 때는 import를 사용해야 하는데, 그럴 경우 from을 사용할 수 없습니다.
말이 많아서 뭐라고 해야 할지 모르겠어요. 간단히 이야기해볼게요.
- 모듈 가져오기 # 모듈 소개
- 모듈에서 가져오기 기타 # 모듈 내 클래스, 함수 또는 변수를 도입하기
- 모듈에서 가져오기 * # 모듈 내 모든 '공용' 멤버를 소개합니다
쉽게 말하자면:
클래스 #把整个一班的学生引入了进来 임포트(import)
수입 그룹인 샤오 왕 #只把一般的小王引入了进来
예를 들어:
시간 패키지가 그 예이며, 다음 두 가지 작성 방법은 다음과 같습니다:
|