每个函数使用单独的文件 - 全局导入

Using seperate files per function - global import

我一直在想,如果在项目中使用多个子文件使代码看起来干净,为什么我必须 导入每个模块 例如在每个子文件中明确记录或时间 。有没有办法让 subfile.py 知道 main.py 的导入。请参阅下面的示例,我想在其中全局使用导入时间

main.py

import logging
import time
from subfile import myfunc

myfunc("Test")

subfile.py

import logging

def myfunc(var):
    logging.info("entered myfunc")
    time.sleep(2)
    logging.info("Variable: {}".format(var))

当所有的依赖关系都是显式的时候会更好。让我们假设 subfile 隐含地使用 main 中的 time,如您所愿。这会导致问题:

  1. 您不能再对 subfile 进行单元测试,因为它不能与 main 和那里定义的依赖项分开工作。您必须在测试模块中 import time。现在 maintests 都有那个导入,而不仅仅是 subfile.
  2. 如果(出于某种原因)您决定从 main 中删除 import timesubfile 会损坏,但您无法知道,除非您 运行 整个项目的一些代码分析器。当前模型允许您仅通过扫描一个文件和目录结构来查找缺失的依赖项。

如果您确实有 很多 的共同依赖项(例如,您需要 timelogging 和每个文件中的其他 10 个包),这线程: 可以帮助管理它。