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
)
他说:
- 他需要在多个文件中使用此功能
- 为什么他会在这些文件中使用
import os
使代码变得难看(然后更多 imports
用于外部模块的每一行使用,然后你有数千个 imports
文件顶部)
import utils
已经存在于那些文件中。
- 此外,
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.
以最大限度地降低复杂性
在我们的项目中有一个 utils.py
文件为几个文件提供函数 (DRY)。
不用说这是怎么做到的,但如果不明白,我会指出,
在这些文件中,我们 import utils
并使用必要的功能。
在开发过程中,我们的一位开发人员上传了一个 PR,其中他向 utils.py
文件添加了几个函数,这是其中之一:
list_dir(directory):
return os.listdir(directory)
当我们问他为什么要写这个函数时(只要import os
在你需要的文件里,然后用os.listdir
)
他说:
- 他需要在多个文件中使用此功能
- 为什么他会在这些文件中使用
import os
使代码变得难看(然后更多imports
用于外部模块的每一行使用,然后你有数千个imports
文件顶部) import utils
已经存在于那些文件中。- 此外,
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.
以最大限度地降低复杂性