【问题标题】:Using seperate files per function - global import每个函数使用单独的文件 - 全局导入
【发布时间】:2022-01-03 15:46:19
【问题描述】:

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

ma​​in.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))

【问题讨论】:

    标签: python python-3.x import dependencies global


    【解决方案1】:

    所有依赖项都明确时会更好。让我们假设subfile 隐式使用来自maintime,就像你想要的那样。这会导致问题:

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

    如果你真的有很多常见的依赖项(例如,你需要timelogging,以及每个文件中的其他 10 个包),这个线程:How to share imports between modules? 可以帮助管理那个。

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2018-11-26
      • 1970-01-01
      • 2021-12-21
      • 2017-09-26
      • 2023-03-11
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多