小编Spe*_*AAA的帖子

具有模块导入的命名空间

我正在学习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那里 …

python import namespaces module local

17
推荐指数
2
解决办法
2万
查看次数

标签 统计

import ×1

local ×1

module ×1

namespaces ×1

python ×1