python 如何将函数引入作用域?

How python brings functions into scope?

我为 scikit-image 做出了贡献并且正在使用 coverage。现在,当我这样做时

coverage run benchmarks/benchmark_name.py

然后生成报告,有很多文件没有任何link到这个文件但是当我运行上面的命令时仍然执行。我在这些文件中注意到一件有趣的事情,只有具有函数定义 (def abc():) 的行是 运行。见下图:

它基本上显示了我的文件中没有任何 link 的文件的覆盖率报告。然而,它是 运行 并且只有函数定义语句和导入语句。

这是python将项目中定义的函数纳入其范围的方式吗?如果是这样的话,我想知道发生这种情况的流程。请帮忙。

谢谢。

您正在查看 import 传递依赖项。在导入时,将执行任何不受 if __name__ == '__main__': 子句保护的内容,包括您提到的 def 语句。

使用 coverage run --omit=... 和类似的选项来 trim 您的报告输出。