Сообщить об ошибке.

Модуль Python и его импорт.

Если программа становится длинная, то ее можно разделить на несколько файлов для упрощения обслуживания. Вы также можете использовать какую то функцию, написанную один раз в нескольких программах, без копирования ее определения в каждую программу.
В Python есть способ поместить определения в файл и использовать их в скрипте или в интерактивном режиме интерпретатора. Такой файл называется модулем. Определения из модуля могут быть импортированы в другие модули или в основной модуль.
Модуль - объект, который служит организационной единицей кода Python. Модули имеют пространство имен, содержащее произвольные объекты Python. Модули загружаются в Python в процессе импорта.
Другими словами это файл, содержащий определения (функции, классы) и операторы Python. Имя файла - это имя модуля с добавленным суффиксом .py. Имя модуля, внутри модуля, доступно в качестве значения глобальной переменной __name__ в виде строки. Используйте текстовый редактор, чтобы создать файл с именем md.py в текущем каталоге со следующим содержимым:
a = [100, 200, 300]

def fib(n):
    """печатает ряд Фибоначчи до n"""
    a, b = 0, 1
    while a < n:
        print(a, end=' ')
        a, b = b, a+b
    print()

class Foo:
    pass
Теперь в интерпретаторе Python импортируйте этот модуль с помощью следующей команды:
>>> import md
Инструкция import md не вводит имена функций, определенных md непосредственно в текущей области видимости, а только вводит имя модуля md. Используя имя модуля, можете получить доступ к функциям и переменным, используя точечную нотацию:
>>> md.fib(1000)
# 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
>>> md.__name__
# 'md'
>>> md.a
# [100, 200, 300]
>>> md.Foo()
# <md.Foo object at 0x03C181F0>
Если вы собираетесь использовать функцию fib часто, то можно назначить ей локальное имя:
>>> fib = md.fib
>>> fib(500)
# 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377
Исполняемые операторы и функций определенные в модуле инициализируются в момент импорта модуля. Они выполняются только один раз, когда имя модуля встречается в операторе import. Они также выполняются, если файл выполняется как скрипт.
Каждый модуль имеет свою область видимости, которая используется в качестве глобальной области видимости всеми функциями, определенными в модуле. Таким образом, автор модуля может использовать глобальные переменные в модуле, не беспокоясь о случайных столкновениях с глобальными переменными пользователя.
Модули могут импортировать другие модули. Обычно, но не обязательно размещать все операторы импорта в начале модуля или скрипта. Импортированные имена модулей помещаются в глобальную область видимости импортируемого модуля или скрипта.
Важно По соображениям эффективности каждый модуль импортируется только один раз за сеанс интерпретатора. Поэтому, если вы меняете/редактируете свои модули, вы должны перезапустить интерпретатор или если это только один модуль, который вы хотите протестировать в интерактивном режиме, используйте importlib.reload(), например import importlib; importlib.reload(modulename).