Python 我只是想知道为什么代码会打印字符串,即使我只是在模块内部导入函数

Python 我只是想知道为什么代码会打印字符串,即使我只是在模块内部导入函数,python,python-3.x,Python,Python 3.x,my_module.py print('Module Imported...') test = 'Test String' def find_index(to_search, target): '''Find the index of a value in a sequence''' for i, value in enumerate(to_search): if value == target: return i

my_module.py

    
print('Module Imported...')

test = 'Test String'


def find_index(to_search, target):
    '''Find the index of a value in a sequence'''
    for i, value in enumerate(to_search):
        if value == target:
            return i
    return 'none'
简介

from my_module import find_index

courses = ['Math', 'Arts', 'History', 'English']

index = find_index(courses, "History")
print(index)
运行此命令时,结果是:

Module Imported...
2


我想知道为什么我的程序打印“Module Imported…”字符串,即使我只导入find_index函数。

从模块导入时,只有指定的名称绑定在导入范围内,但该模块中的所有顶级代码都会执行

这一点很重要,因为您导入的某些名称可能依赖于您没有显式导入的代码——例如,该模块自己的导入、导出函数所依赖的私有函数/类/对象的定义等等!如果您必须了解正在导入的模块的所有依赖项,并显式导入每个依赖项,以确保您实际尝试使用的东西能够正确工作,那么这将是非常不方便的

不用说,您不应该拥有不希望在每次导入时执行的顶级模块代码。这就是为什么您经常在脚本中看到块,如:

if __name__ == '__main__':
    # actually do stuff

从模块导入时,只有指定的名称绑定在导入范围内,但该模块中的所有顶级代码都将执行

这一点很重要,因为您导入的某些名称可能依赖于您没有显式导入的代码——例如,该模块自己的导入、导出函数所依赖的私有函数/类/对象的定义等等!如果您必须了解正在导入的模块的所有依赖项,并显式导入每个依赖项,以确保您实际尝试使用的东西能够正确工作,那么这将是非常不方便的

不用说,您不应该拥有不希望在每次导入时执行的顶级模块代码。这就是为什么您经常在脚本中看到块,如:

if __name__ == '__main__':
    # actually do stuff

通过导入文件,初始代码运行,并且“从我的\u模块”只导入可使用的范围,以便更快地加载文件,但第一个代码始终运行

通过导入文件,初始代码运行,而“从我的\u模块”只导入可使用的范围,以便更快地加载文件,但首先加载代码总是在运行

如果你必须把代码放在
中,如果
你必须把代码放在
中,如果
你必须把代码放在
中,如果
你必须把代码放在
中。Thx,我是新来的codingoh,这是有道理的。Thx,我是新的编码