Namespaces com importações de módulo

Eu estou aprendendo Python e ainda sou um iniciante, embora eu tenha estudado por cerca de um ano. Eu estou tentando escrever um módulo de funções que é chamado dentro de um módulo principal. Cada uma das funções no módulo chamado precisa que o módulo matemático seja executado. Eu estou querendo saber se há uma maneira de fazer isso sem importar o módulo de matemática dentro do módulo chamado. Aqui está o que eu tenho:

main.py:

from math import *
import module1

def wow():

    print pi


wow()
module1.cool()

module1.py:

def cool():

    print pi

Quando corrermain.py Eu recebo:

3.14159265359

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

O que estou tendo dificuldade em entender é por que recebo um erro de nome ao executarmain.py. Eu sei que a variávelpi torna-se global para o módulo principal na importação porquewow pode acessá-lo. Eu também sei quecool torna-se global para o módulo principal após a importação porque eu posso imprimirmodule1.cool e pegue<function cool at 0x02B11AF0>. Então desdecool está dentro do namespace global do módulo principal, o programa não deve procurar primeiro dentro da funçãocool para a variávelpie quando não encontrar, olhe para dentromain módulo para a variávelpi eencontre lá?

A única maneira de contornar isso que eu sei é importar o módulo de matemática dentromodule1.py. Eu não gosto da ideia disso, apesar de que isso torna as coisas mais complicadas e eu sou fã de código simples e agradável. Eu sinto que estou perto de entender namespaces, mas preciso de ajuda para isso. Obrigado.

questionAnswers(5)

yourAnswerToTheQuestion