我开始了一个继续开发的 python 项目。它有10个本地图书馆。他们每个人都互相称呼“from name import *”。以 main 为例:
from name3 import *
from name2 import *
from general_functions import *
from messages import *
from network import *
from keyboard_functions import *
from process_functions import *
from name4 import *
from settings import * # settings
根据 python 的 zen,显式优于隐式。同样由于理解和调试项目,我需要明确的导入方法和变量。
其他库也使用相同的导入方法。我觉得所有库都通过“*”导入所有库。
我尝试手动重构
from debug_functions import (print_log, print_log2, debug_functions_initilizer, debug_prints_abbrev, print_setting_info,
print_error, print_warn, print_error_warning_count_of_this_process, print_debug,
print_performance_report)
像这样。
但当我看得更深时,我停下了脚步。
例如 a.py 导入 exp1 库。在 b.py 中,它调用from a.py import *
. 所以在b.py中,不需要import exp1就可以使用exp1库。因此,在 b.py 中,如果我转换from a.py import *
为显式形式,from a.py import something
则会出现依赖于 exp1 库的错误。有很多这样的例子。
我该如何解决这个问题?
更新
我做了什么?我用自己的方法导入库,每个库的变量。例如,我有 a.py、b.py 和 c.py 库。我将 a.py 和 b.py 用他们自己的所有方法导入到 c.py。像那样,
from a import foo, bar
from b import exp, solv
在 b.py 中,以同样的方式,
from a import foo, bar
from c import sa, as
在那之后,图书馆有真正所有者的必要方法,而不是第三图书馆。
最后,我删除了库中未使用的方法。