Пространства имен с импортом модулей
Я изучаю 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
, Я неМне не нравится идея этого, потому что это усложняет ситуацию, и я фанат хорошего, простого кода. Я чувствую, что близок к пониманию пространств имен, но мне нужна помощь в этом. Благодарю.