我导入的帮助文件是否也需要导入语句?

Do helper files that I import, also need import statements?

我有一个包含绘图函数的帮助文件。

我还有我的主笔记本代码,它使用 imports sns 用于 seaborn,plt 用于 pyplot。

帮助程序文件本身没有 import 语句来导入这些模块。在我正在使用的笔记本中,然而,有如下语句:

import seaborn as sns
import matplotlib.pyplot as plt

我使用以下行导入我的帮助文件:from helpers.plotter import plots

当我调用该函数时出现以下错误:NameError: name 'plt' is not defined

我需要在帮助文件中包含那些导入语句吗?记在笔记本上还不够吗?

import 语句做了两件事:

  1. 如有必要,它会评估 .py 文件的内容以定义模块。
  2. 在当前模块中引入一个全局变量来引用导入的模块

#1 可能不会发生,例如,如果已经导入了相同的模块。 总是 是第 2 种情况,如果不这样做,就会导致您看到的错误。

所以是的,您需要在模块中使用 import 语句。

要添加到 chepner's answer,模块只定义一次,在内存中的一个位置。当你在helper模块中添加import语句时,python只是在helper模块中创建一个变量指向内存中的already-imported模块。从下面的实验中可以清楚地看出这一点:

文件argparsetest.py

import argparse

print("test:", hex(id(argparse)))

文件argparsemain.py

import argparsetest

import argparse

print("main:", hex(id(argparse)))

在 运行 python argparsemain.py,我们得到:

test: 0x23c04b59048
main: 0x23c04b59048

如果您在 main.py 之前 导入 test.py

,那不会有什么不同
main: 0x130fc432f48
test: 0x130fc432f48