我正在学习Python,我仍然是初学者,虽然我已经研究了大约一年了.我正在尝试编写一个在主模块中调用的函数模块.被调用模块中的每个函数都需要运行数学模块.我想知道是否有办法在不调用被调用模块内的数学模块的情况下执行此操作.这是我有的:
main.py:
from math import *
import module1
def wow():
print pi
wow()
module1.cool()
Run Code Online (Sandbox Code Playgroud)
module1.py:
def cool():
print pi
Run Code Online (Sandbox Code Playgroud)
跑步时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
Run Code Online (Sandbox Code Playgroud)
我很难理解的是为什么我在运行时遇到名称错误main.py.我知道变量pi在导入时变为主模块的全局变量,因为wow可以访问它.我也知道cool在导入时对主模块变得全局,因为我可以打印module1.cool并获取<function cool at 0x02B11AF0>.因此,因为cool它位于主模块的全局命名空间内,所以程序不应该首先查看cool变量的函数内部pi,然后当它找不到它时,查看main模块内部的变量pi并在那里 …