首页 > 解决方案 > 模块导入良好实践

问题描述

导入模块的“良好做法”是什么?例如,如果我有一个名为“module”的模块和一个名为“func”的函数,哪个更好?

1:

def do_things():
    from module import func
    func()

2:

from module import func

def do_things():
    func()

3:

import module as mod

def do_things():
    mod.func()

4:

def do_things():
    import module as mod
    mod.func()

我需要确保我的代码为这个项目编写得很好。另外,从模块导入类(例如“从 bs4 导入 BeautifulSoup”)是否可以将它们导入程序顶部的全局命名空间?如果不是,是否适用与此处相同的规则?

标签: pythonclassoopimportmodule

解决方案


从性能上看,importimport from 是完全一样的。解释器会将整个模块加载到内存中。

这让你有一个选择:用哪种方式来做。我会选择使代码更具可读性且不那么模棱两可的那个:

  • 导入模块(别名或不别名)使用命名空间方法,这将避免两个模块具有同名函数的情况。
  • 仅导入您需要的功能可能会为您的开发人员节省认知负担。

更新:关于本地进口,请参阅此答案。Python 将使用本地或文件顶部导入。本地导入可以使您免于循环依赖。更好的设计也可以帮助您。

你必须选择你自己的毒药,这都是关于权衡的。


推荐阅读