为什么我不需要导入支持模块?

时间:2020-03-04 20:49:25

标签: python

get_square_root()函数依赖于math模块。要在get_square_root()中调用analysis.py函数,我不需要导入math模块,为什么?


# calculator.py

import math

def get_square_root(a):
    return math.sqrt(a)
#analysis.py

import calculator

calculator.get_square_root(5)

我在python中了解import的一些信息(如果我理解错了,请更正我)。当import calculator时,Python解释器读取整个calculator.py模块,但是<ModuleName>.<ObjectName>不能访问该模块中的对象。这就是我在get_square_root()中称analysis.py的方式。但是get_square_root()如何访问math,因为math中没有analysis.py

1 个答案:

答案 0 :(得分:1)

以任何方式运行math时,get_square_root都绑定在其模块范围内,从而使import calculator可以访问它。

analysis中运行math时,get_square_root仍在calculator的模块范围内,并且analysis绑定在{{ 1}},因此您可以以calculator.math的身份访问它。

from calculator import get_square_root中运行analysis时,math仍在get_square_root的模块范围内,但是由于{{ 1}}没有绑定。