Przestrzenie nazw z importem modułów

Uczę się Pythona i nadal jestem początkującym, chociaż studiuję go od około roku. Próbuję napisać moduł funkcji, który jest wywoływany w module głównym. Każda z funkcji w wywoływanym module wymaga uruchomienia modułu matematycznego. Zastanawiam się, czy istnieje sposób, aby to zrobić bez importowania modułu matematycznego wewnątrz wywoływanego modułu. Oto co mam:

main.py:

from math import *
import module1

def wow():

    print pi


wow()
module1.cool()

module1.py:

def cool():

    print pi

Podczas biegumain.py Dostaję:

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

Trudno mi zrozumieć, dlaczego podczas uruchamiania otrzymuję błąd nazwymain.py. Wiem, że zmiennapi staje się globalny do głównego modułu po zaimportowaniu, ponieważwow może uzyskać do niego dostęp. Też to wiemcool staje się globalny do głównego modułu po zaimportowaniu, ponieważ mogę drukowaćmodule1.cool i dostać<function cool at 0x02B11AF0>. Od tego czasucool znajduje się w globalnej przestrzeni nazw głównego modułu, czy program nie powinien najpierw zajrzeć do funkcjicool dla zmiennejpi, a potem, kiedy go tam nie znajdzie, zajrzyj do środkamain moduł dla zmiennejpi iZnajdź to tam?

Jedynym sposobem obejścia tego, o czym wiem, jest zaimportowanie modułu matematycznego do środkamodule1.py. Nie podoba mi się ten pomysł, ponieważ sprawia to, że jest to bardziej skomplikowane i jestem fanem miłego, prostego kodu. Czuję, że jestem blisko uchwycenia przestrzeni nazw, ale potrzebuję pomocy w tej sprawie. Dzięki.

questionAnswers(5)

yourAnswerToTheQuestion