如果未使用的导入在导入时运行,则它们是否可接受?

时间:2018-04-20 12:36:08

标签: python import

我使用了许多不同的基本脚本来在不同时间推送数据,提取报告等。这些脚本有一个在VM上运行的cron条目。

当每个脚本启动时,我想运行一个共享的函数。然而,我目前的做法并不清楚。

一个基本的例子,我有:

sharedmodule.py

def script_start_func()
    # do stuff

script_start_func()

然后我将此模块导入到每个正在运行的脚本中,以便在导入模块时运行该函数,如下所示:

one_of_many_different_scripts.py

import sharedmodule  #flagged in IDE as unused

# do normal script stuff

感觉应该有更好的方法来达到同样的目的,尽管当时它似乎是一种不需要sharedmodule.script_start_func()在每个脚本顶部的合理方式。

是否有一种首选的方法?

我开始认为实际调用该函数只是一个额外的行并且清楚地知道发生了什么?

我搜索过这个主题,但似乎找不到现有答案。

由于

1 个答案:

答案 0 :(得分:1)

我将通过引用“禅宗的Python”来回答:

> python -c "import this"
  

Python的禅宗,蒂姆·彼得斯

     

美丽胜过丑陋   明确比隐含更好   简单比复杂更好   复杂比复杂更好   扁平比嵌套好。
  稀疏比密集更好   可读性很重要   特殊情况不足以打破规则   虽然实用性超过了纯度   错误绝不应该默默无闻   除非明确沉默。
  面对模棱两可,拒绝猜测的诱惑   应该有一个 - 最好只有一个 - 明显的方式来做到这一点   虽然这种方式起初可能并不明显,除非你是荷兰人   现在总比没有好。
  虽然现在永远不会比正确更好   如果实施很难解释,那是个坏主意   如果实施很容易解释,那可能是个好主意   命名空间是一个很棒的主意 - 让我们做更多的事情吧!

第二行指出 Explicit比隐式更好。这就是我想要传达的内容。由于以下几个原因,显式调用函数比隐式函数要好得多:

  • 它可以控制调用该函数的时间和位置
  • 当出现问题时,它有助于调试,因为您可以注释掉呼叫,在呼叫之前和/或之后打印一些调试信息
  • 代码更容易理解,因为该调用未隐藏在您的调用脚本中

这样做的成本当然是必须输入一条额外的线,但我相信这些好处会增加成本。