2010-06-08 3 views

답변

34

스크립트는 일반적으로 직접 실행 가능한 코드 조각으로, 그 자체로 실행됩니다. 모듈은 일반적으로 다른 코드로 가져온 라이브러리입니다.

내부적 인 차이는 없습니다. 라이브러리 코드는 직접 실행될 때 라이브러리 코드가 종종 아무 것도하지 않거나 (또는 ​​단위 테스트를 실행하기 만하지만) 스크립트로 설계된 코드를 가져 오면 실행 가능하고 가져올 수 있다는 점에 유의하십시오 따라서 일반적인 if __name__ == "__main__" 테스트를 실행하십시오.

+2

+1 : "내부 구분 없음". 그것은 당신이 그것을 어떻게 사용하는지입니다. –

+2

예. 또한 우리가 구별을하는 한, 다른 프로그램의 동작을 스크립트로 작성하지 않는 한 스크립트 (스크립트가 아닌)라고 부릅니다. –

10

모든 Python 모듈은 스크립트로 실행될 수 있습니다. 유일한 중요한 차이점은 모듈로 가져올 때 파일 이름이 모듈 이름의 기초로 사용되는 반면 스크립트로 실행하면 모듈의 이름은 __main__입니다.

이 구별은 if __name__=="__main__"이 지키고있는 블록에 스크립트 특정 코드를 포함 시켜서 가져올 때 다른 동작을 가능하게합니다. 이는 사용자가 __main__을 가져 오는 대신 자체 이름으로 주 모듈을 가져 오려고 시도 할 때 혼동을 일으키는 것으로 알려져 있습니다.

스크립트와 모듈의 사소한 차이점은 모듈을 가져올 때 시스템은 기존 .pyc 파일 (존재하고 최신 Python 버전)을 사용하려고 시도하고, .py 파일을 컴파일하면 .pyc 파일을 저장하려고 시도합니다. .py 파일을 스크립트로 실행하면 이전에 컴파일 된 모듈을로드하지 않으며 컴파일 된 코드를 저장하지 않습니다. 이러한 이유로 시작 시간을 최소화하기 위해 스크립트를 작게 유지하는 것이 좋습니다.

+0

* *로 실행 된 문구를 *로 바꿔 줄 것을 제안합니다. * [* of comment] (https://stackoverflow.com/)에서 제안한대로 * program *에 의해 * script *가 남아있을 수도 있습니다. 질문/2996110/what-of-the-the-difference-a-module-and-a-python에서 # comment3060238_2996170) – Wolf

관련 문제