每个函数使用单独的文件 - 全局导入
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
,如您所愿。这会导致问题:
- 您不能再对
subfile
进行单元测试,因为它不能与 main
和那里定义的依赖项分开工作。您必须在测试模块中 import time
。现在 main
和 tests
都有那个导入,而不仅仅是 subfile
.
- 如果(出于某种原因)您决定从
main
中删除 import time
,subfile
会损坏,但您无法知道,除非您 运行 整个项目的一些代码分析器。当前模型允许您仅通过扫描一个文件和目录结构来查找缺失的依赖项。
如果您确实有 很多 的共同依赖项(例如,您需要 time
、logging
和每个文件中的其他 10 个包),这线程: 可以帮助管理它。
我一直在想,如果在项目中使用多个子文件使代码看起来干净,为什么我必须 导入每个模块 例如在每个子文件中明确记录或时间 。有没有办法让 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
,如您所愿。这会导致问题:
- 您不能再对
subfile
进行单元测试,因为它不能与main
和那里定义的依赖项分开工作。您必须在测试模块中import time
。现在main
和tests
都有那个导入,而不仅仅是subfile
. - 如果(出于某种原因)您决定从
main
中删除import time
,subfile
会损坏,但您无法知道,除非您 运行 整个项目的一些代码分析器。当前模型允许您仅通过扫描一个文件和目录结构来查找缺失的依赖项。
如果您确实有 很多 的共同依赖项(例如,您需要 time
、logging
和每个文件中的其他 10 个包),这线程: