首页 > 解决方案 > Python模块化编程中导入模块的正确方法是什么?

问题描述

在 Python 中为模块化编程导入外部包的正确方法是什么?有任何有用的文档,例如PEPPython 中的结构化吗?

详细介绍

我是 Python(或其他语言)包开发的新手,我想知道专业人士是如何做到的,即 Python 的方式是什么,要牢记效率、可读性和开发(例如,IDE/Sublime 会识别内部组件那个包)。

例如,假设有一个模块需要numpy.log. 我应该import numpy as np在模块内还是在模块内__init__.py?我应该写from numpy import log吗?我应该编写一个common_imports.py模块以及我编写的from common_imports import *所有模块吗?

标签: pythonmodulepython-importpython-modulepython-packaging

解决方案


通常,您可以根据需要导入模块。您需要做的就是__all__在模块级别设置变量。它由您希望向所有人公开的名称元组组成。例如,如果您有一个__init__.pyin packagesomepackage

#__init__.py
__all__=('func_a',)

def func_a(): pass
def func_b(): pass
def func_c(): pass
def func_d(): pass

然后当你这样做时from somepackage import *,只会func_a被导入。另外,如果你这样做from somepackage import func_b了,那么 Python 会给你一个ImportError


推荐阅读