Пространства имен с импортом модулей

Я изучаю Python и все еще начинаю, хотя изучаю его около года. Я пытаюсь написать модуль функций, который вызывается внутри основного модуля. Каждая из функций в вызываемом модуле нуждается в математическом модуле для запуска. Мне интересно, есть ли способ сделать это без импорта математического модуля внутри вызываемого модуля. Вот что у меня есть :::

main.py

from math import *
import module1

def wow():

    print pi


wow()
module1.cool()

module1.py

def cool():

    print pi

При бегеmain.py Я получил:

3.14159265359

Traceback (most recent call last):
  File "Z:\Python\main.py", line 10, in 
    module1.cool()
  File "Z:\Python\module1.py", line 3, in cool
    print pi
NameError: global name 'pi' is not defined

Что я'мне трудно понять, почему я получаю ошибку имени при запускеmain.py, Я знаю что переменнаяpi становится глобальным для основного модуля при импорте, потому чтоwow может получить к нему доступ. Я тоже знаю чтоcool при импорте становится глобальным для основного модуля, потому что я могу напечататьmodule1.cool и получить, Так какcool находится внутри глобального пространства имен основного модуля, не долженпрограмма сначала заглянет внутрь функцииcool для переменнойpiи тогда, когда это нене найти его там, заглянуть внутрьmain модуль для переменнойpi а такжеНайди это там?

Единственный способ обойти это, что я знаю, это импортировать математический модуль внутриmodule1.py, Я неМне не нравится идея этого, потому что это усложняет ситуацию, и я фанат хорошего, простого кода. Я чувствую, что близок к пониманию пространств имен, но мне нужна помощь в этом. Благодарю.

Ответы на вопрос(5)

Ваш ответ на вопрос