我正在学习 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 <module>
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
和获取<function cool at 0x02B11AF0>
. 所以既然cool
在主模块的全局命名空间内,程序不应该先在函数内部查找cool
变量pi
,然后当它在那里找不到时,在main
模块内部查找变量pi
并在那里找到它?
我所知道的解决这个问题的唯一方法是在里面导入数学模块module1.py
。我不喜欢这样的想法,因为它使事情变得更加复杂,而且我喜欢漂亮、简单的代码。我觉得我已经接近掌握命名空间了,但在这方面需要帮助。谢谢。