Python主程序如何获取工具模块引用库中的变量?
如何正确访问外部库中的变量
先明确你的场景:
- 外部库
some_library的__init__.py里定义了变量hello="frog" file1.py作为工具模块,导入了some_library并封装了run()函数file2.py是主文件,需要调用file1的run(),同时要检查some_library.hello的值
结论:直接在file2.py中导入some_library是更优的方案
推荐代码写法:
# file2.py import some_library from file1 import run if some_library.hello == "frog": run()
为什么不推荐通过file1间接访问?
- 可读性差:其他开发者看
file2的代码时,无法直接知道它依赖some_library,得去翻file1的导入逻辑,增加理解成本 - 耦合性高:如果以后
file1不再需要some_library(比如重构时移除了相关依赖),file2里通过file1.some_library访问的代码会直接报错 - 语法不支持:你尝试的
from file1 import run, file1.some_library是错误写法,Python不允许这种导入方式,就算改成import file1再用file1.some_library,依然不符合编码惯例
补充说明
虽然Python里同一个模块只会被加载一次,不管是直接导入还是通过其他模块间接导入,拿到的some_library都是同一个实例,变量值完全一致,但从代码的可维护性和可读性角度,谁使用谁直接导入是Python社区公认的最佳实践,符合PEP8编码规范。
内容的提问来源于stack exchange,提问作者dataviews
相关产品推荐
相关产品推荐

