我应该在 Python 中有一个单独的导入文件吗?什么是最佳实践?
Should I have a separate imports file in Python? What is best practice?
main.py:
import sys
import os
import datetime
import numpy
from util import *
util.py:
import sys
import os
import logging
在main.py中是否需要“import sys”和“import os”?
如果我在 main.py 和 util.py 中有“import sys”和“import os”,脚本会加载模块两次吗?
如果我创建一个单独的 myimports.py 文件,其中包含两个文件的所有导入,并在 main.py 和 util.py 中指定:
from myimports import *
是否每个文件都必须导入它不需要的模块?
我应该只保留各自的导入,而不是使用单独的 myimports.py 文件吗?
如果我只需要来自 sys 的路径,如果我使用脚本加载速度会更快还是占用内存更少:
从 sys 导入路径 # ?
以下内容可能对您有用。抱歉,我无法回答你所有的问题。
我做了这个python文件目录。
python_files
\main.py
\my_imports.py
在my_imports.py
# module to get current time
from datetime import datetime
current_time = datetime.now()
在main.py
# import my_imports file from the same directory
import my_imports as my_imports
# use my_imports local name to access current_time and then format it.
current_time = my_imports.current_time.strftime("%H:%M:%S")
# now print to console
print("Current Time =", current_time)
现在在 运行 main.py 中,它会将当前时间打印到控制台。希望这个技巧能为您解决。
很难回答,取决于它是否用于 main.py
代码
否,python 导入系统缓存评估模块。导入后,任何请求相同模块的导入语句都将从全局注册表中return它。这有起有落
如果我没理解错的话——这通常是一种不好的做法(在编写库或迁移具有复杂向后兼容性的代码时有一些例外)。您应该将每个模块中的导入视为此模块依赖项的提示——就像函数中的参数一样。它们更清晰、更明确——阅读和理解您的代码会更容易。这是您应该首先考虑的主要(如果不是唯一)考虑因素
在使用导入功能的模块中保留导入。导入包装器是一个很奇怪的想法——它可能在极少数情况下会有一些用处,但在正常的 day-to-day 开发中它会减少 true code quality
没有区别,一旦你在任何地方从 sys
(或任何其他模块)请求任何东西,整个 sys
将被评估并放入模块注册表。但通常显式导入确实是一件好事——from sys import path
暗示你的模块依赖于 Path
。 import sys
之类的东西传达“我严重依赖 sys
模块,因此一次导入所有内容更容易”。在第一种情况下,reader 期待摆弄 PYTHONPATH
的典型工作,在后一种情况下 – 硬编码 system-level“元编程”。
Side-effect – 因为模块是作为一个整体导入和缓存的,导入完成后,任何其他模块中 sys
的导入都会很快(直到请求强制重新加载或注册表手动更改)
main.py:
import sys
import os
import datetime
import numpy
from util import *
util.py:
import sys
import os
import logging
在main.py中是否需要“import sys”和“import os”?
如果我在 main.py 和 util.py 中有“import sys”和“import os”,脚本会加载模块两次吗?
如果我创建一个单独的 myimports.py 文件,其中包含两个文件的所有导入,并在 main.py 和 util.py 中指定:
from myimports import *
是否每个文件都必须导入它不需要的模块?
我应该只保留各自的导入,而不是使用单独的 myimports.py 文件吗?
如果我只需要来自 sys 的路径,如果我使用脚本加载速度会更快还是占用内存更少:
从 sys 导入路径 # ?
以下内容可能对您有用。抱歉,我无法回答你所有的问题。
我做了这个python文件目录。
python_files
\main.py
\my_imports.py
在my_imports.py
# module to get current time
from datetime import datetime
current_time = datetime.now()
在main.py
# import my_imports file from the same directory
import my_imports as my_imports
# use my_imports local name to access current_time and then format it.
current_time = my_imports.current_time.strftime("%H:%M:%S")
# now print to console
print("Current Time =", current_time)
现在在 运行 main.py 中,它会将当前时间打印到控制台。希望这个技巧能为您解决。
很难回答,取决于它是否用于
main.py
代码否,python 导入系统缓存评估模块。导入后,任何请求相同模块的导入语句都将从全局注册表中return它。这有起有落
如果我没理解错的话——这通常是一种不好的做法(在编写库或迁移具有复杂向后兼容性的代码时有一些例外)。您应该将每个模块中的导入视为此模块依赖项的提示——就像函数中的参数一样。它们更清晰、更明确——阅读和理解您的代码会更容易。这是您应该首先考虑的主要(如果不是唯一)考虑因素
在使用导入功能的模块中保留导入。导入包装器是一个很奇怪的想法——它可能在极少数情况下会有一些用处,但在正常的 day-to-day 开发中它会减少 true code quality
没有区别,一旦你在任何地方从
sys
(或任何其他模块)请求任何东西,整个sys
将被评估并放入模块注册表。但通常显式导入确实是一件好事——from sys import path
暗示你的模块依赖于Path
。import sys
之类的东西传达“我严重依赖sys
模块,因此一次导入所有内容更容易”。在第一种情况下,reader 期待摆弄PYTHONPATH
的典型工作,在后一种情况下 – 硬编码 system-level“元编程”。Side-effect – 因为模块是作为一个整体导入和缓存的,导入完成后,任何其他模块中
sys
的导入都会很快(直到请求强制重新加载或注册表手动更改)