模块顶部import
- 优点
- 可读性好
- 大多数情况下可以提高加载速度
- 缺点
- 新手容易犯循环依赖导致的ImportError的错误
- 某些时候会降低加载速度,比如被导入的模块非常大,而本模块的初始化不需要被导入模块
函数/方法内部import
- 优点
- 某些时候能够提高加载速度,因为直到函数被执行时才会去加载
- 可以避免模块间循环引用产生的ImportError错误
- 缺点
- 可读性较差,难以一目了然地知道当前模块依赖于哪些额外的模块
- 如果测试不完整,而被导入的模块有错误,则运行过程中会产生不可预估的错误
总结
应该使用模块顶部导入的方式,除非一定要使用函数内部导入的方式才能完成工作。