우리가 파이썬 인터프리터를 종료하고 다시 들어가면, 이전에 정의해놓았던 함수와 변수들의 정의는 전부 사라지게 됩니다.
따라서 우리가 어느 정도 이상의 복잡한 프로그램을 작성하려는 경우, 인터프리터를 사용하여 한 줄씩 입력하여 실행하는 것보다
텍스트 편집기를 사용하여 파일을 작성하고 인터프리터로 해당 파일을 실행하는 것이 더 낫습니다.
또 프로그램이 길어지면, 유지 보수를 쉽게 하기 위해 여러 개의 파일로 분할할 수 있습니다.
또한 파일을 사용하면 한번 작성한 편리한 함수를 복사하지 않고 여러 프로그램에서 사용할 수 있습니다.

이것을 지원하기 위해, 파이썬에서는 파일에 함수들을 저장하고 인터프리터에서 사용하는 방법을 제공합니다.
이러한 함수나 변수들을 모아 놓은 파일을 모듈(module)이라고 합니다. 모듈 안에 있는 함수들은 import 문장으로 다른 모듈로 포함될 수 있습니다.
모듈 중에서 main 모듈은 최상위 수준에서 실행되는 스크립트를 의미합니다.
파일 이름은 파이썬 모듈 이름에 .py 확장자를 붙이면 됩니다. 모듈 안에서는 모듈의 이름은 __name__의 값(문자열)으로 접근이 가능합니다.
예를 들어 fibo.py 파일에 텍스트 편집기를 사용하여 다음과 같은 내용을 저장하였다고 합시다.
# 피보나치 수열 모듈
def fib(n): # 피보나치 수열을 화면에 출력합니다.
a, b = 0, 1
while b < n:
print(b, end=' ')
a, b = b, a + b
print()
이제 파이썬 인터프리터를 시작하여 다음과 같은 명령어로 이 모듈을 포함할 수 있습니다.
이때 반드시 fibo.py 파일이 인터프리터가 실행되는 현재 디렉토리에 있어야 합니다.
import fibo
현재 fibo 모듈 안에 정의된 함수의 이름은 지정하지 않았습니다. 단지 모듈만을 포함시킨 것입니다. 함수를 사용하려면 다음과 같이 합니다.
import fibo
fibo.fib(1000)
print(fibo.__name__)
<실행 결과>
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
fibo
모듈 중에서 함수를 지정하여 포함시킬 수도 있습니다.
from fibo import fib
fib(500)
만약 모든 함수를 포함시키고 싶으면 * 기호를 사용합니다.
from fibo import *
fib(500)
만약 파이썬 모듈을 다음과 같이 명령어 프롬프트를 이용하여 실행한다면 "__name__"이 "__main__" 으로 변경되면서 모듈 안의 코드가 실행됩니다.
만약 우리가 모듈 fibo.py의 끝에 다음과 같은 코드를 추가한다면 명령 프롬프트를 이용하여 실행할 때, fib() 함수가 호출될 것입니다.
from fibo import *
if __name__ == "__main__":
import sys
fib(int(sys.argv[1]))
만약 단순히 모듈이 포함된다면 모듈 안의 코드는 실행되지 않습니다.
import fibo
<실행 결과>
파이썬 모듈을 만든 후에는 테스트를 위해 모듈 안에 함수를 테스트하는 문장을 넣습니다. 이 경우 import 문장만으로 함수를 실행하기 때문입니다.
# 피보나치 수열 모듈
def fib(n): # 피보나치 수열을 화면에 출력합니다.
a, b = 0, 1
while b < n:
print(b, end=' ')
a, b = b, a+b
print()
fib(500) # 포함만 되면 자동으로 실행됩니다.
import fibo
<실행 결과>
1 1 2 3 5 8 13 21 34 55 89 144 233 377