6. Модули

Если вы выходите из интерпретатора Python и входите в него снова, определения, которые вы сделали (функции и переменные) теряются. Следовательно, если вы хотите написать какую-нибудь более длинную программу, вам лучше использовать текстовый редактор для подготовки ввода для интерпретатора и выполнить код из этого файла в качестве входных данных. Это называется созданием скриптов. Когда ваша программа становится длиннее, вы можете захотеть разделить ее на несколько файлов для более легкого сопровождения. Вы также можете захотеть использовать удобную написанную вами функцию в нескольких программах без копирования ее определения в каждую программу.

Для поддержки этого в Python есть способ поместить определения в файл и использовать их в скриптах или в интерактивном режиме интерпретатора. Такой файл называется модулем; определения из модуля могут быть импортированы в другие модули или в главный модуль (собрание переменный, к которым вы имеете доступ в выполняемом скрипте на верхнем уровне и режиме калькулятора).

Модуль - это файл, содержащий определения и операторы Python. Имя файла является именем модуля с добавленным суффиксом .py. В модуле имя модуля (как строка) доступно как значение глобальной переменной __name__. Для примера, используйте ваш любимый текстовый редактор для создания файла под названием fibo.py в текущей директории со следующим содержанием:

# модуль чисел Фибоначчи
 
def fib(n):    # выводит ряд Фибоначчи до n
    a, b = 0, 1
    while b < n:
        print(b, end=' ')
        a, b = b, a+b
    print()
 
def fib2(n): # возвращает ряд Фибоначчи до n
    result = []
    a, b = 0, 1
    while b < n:
        result.append(b)
        a, b = b, a+b
    return result

Теперь войдите в интерпретатор Python и импортируйте этот модуль с помощью следующей команды:

>>> import fibo

Это не вводит имена определенных в fibo функций прямо в текущую таблицу символов; это вводит сюда только имя модуля fibo. Используя имя модуля, вы можете получить доступ к функциям:

>>> fibo.fib(1000)
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> fibo.fib2(100)
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
>>> fibo.__name__
'fibo'

Если вы намерены использовать функцию часто, то можете связать ее с локальным именем:

>>> fib = fibo.fib
>>> fib(500)
1 1 2 3 5 8 13 21 34 55 89 144 233 377