Python 导入、实用程序文件以及如何组合它们

Python imports, utils file and how to combine them

在我们的项目中有一个 utils.py 文件为几个文件提供函数 (DRY)。

不用说这是怎么做到的,但如果不明白,我会指出, 在这些文件中,我们 import utils 并使用必要的功能。

在开发过程中,我们的一位开发人员上传了一个 PR,其中他向 utils.py 文件添加了几个函数,这是其中之一:

list_dir(directory):
    return os.listdir(directory)

当我们问他为什么要写这个函数时(只要import os在你需要的文件里,然后用os.listdir

他说:

  1. 他需要在多个文件中使用此功能
  2. 为什么他会在这些文件中使用 import os 使代码变得难看(然后更多 imports 用于外部模块的每一行使用,然后你有数千个 imports文件顶部)
  3. import utils 已经存在于那些文件中
  4. 此外,import os已经存在于utils.py文件中

不用说了,大家都知道Python对模块进行一次性导入,这里的问题就不一样了:

什么叫Pythonic?当有一行(也许两行)函数时,只需将模块导入到需要该函数的文件中(虽然看起来代码变得丑陋),或者将其写在utils.py中。 ?

What is more called Pythonic?

通常的做法是只在需要的地方导入模块。这意味着在每个使用它的模块中写入 "import os" 。

我能想到的是合理的理由。如果将来,您需要更改 list_dir() 的功能(可能过滤掉某些类别的文件),最好让所有用户都引用相同的文件来源。

另一个想法。正如目前所写,根本不需要包装函数。在 utils.py 中只写 from os import listdir as list_dir

此外,为什么要更改名称?坚持使用 listdir.

以最大限度地降低复杂性