概述
1、简单情形
Python中的包、模块导入主要有两种方式:
(1) import package.module
(2) from package import module
将模块导入当前程序之后,模块module中对应的属性attr使用方式分别是:
(1) package.module.attr
(2) module.attr
由此可以总结模块中的成员引用规律:
import导入的包,使用包中具体成员时要使用‘绝对路径’ ,从顶级包名开始写成员引用路径;
from—import导入的包,使用包中具体成员时使用‘相对路径’,从from—import 结构中的import之后的模块开始写成员引用路径;
2、复杂情形
当包中包含子包时,并考虑到__init__.py
文件作用时,包、模块的导入及成员的使用较为复杂,容易造成混淆,例如,Python编程时有如下包结构:
pkg/
__init__.py
subPkg_a/
__init__.py
mod_a.py
mod_a1.py
mod_a2.py
subPkg_b/
__init__.py
mod_b.py
__init__.py
文件解释:
- 每个包下都有
__init__.py
文件,这是个包初始化模块,导入包时实质上是导入该文件中所定义的模块,也可以在该文件中做一些初始化工作,也可以是空文件。
根据上述包结构,若在mod_b.py
中要使用mod_a、mod_a1中的函数(注意各种导入方式中,函数的引用方式是不同的),有以下几种方法:
在
mod_b.py
文件中写import pkg.subPkg_a.mod_a
、import pkg.subPkg_a.mod_a1
或者from pkg.subPkg_a import mod_a
、from pkg.subPkg_a import mod_a1
在subPkg_a对应的
__init__.py
文件中写import pkg.subPkg_a.mod_a
、import pkg.subPkg_a.mod_a1
,那么在mod_b.py文件中导入时就可以使用import pkg.subPkg_a
或者from pkg.subPkg_a import *
方式导入mod_a及mod_b了,如下图所示.
当一个包中包含多个模块时,在__init__.py
中还可以使用__all__
变量存储一个导入模块列表,表达更为简洁,如下图所示。
注意:因为__all__
变量列表中没有包含mod_a2
,此时在mod_b
中不能使用mod_a2
中的成员。
最后
以上就是玩命大门为你收集整理的Python中包、模块导入解释的全部内容,希望文章能够帮你解决Python中包、模块导入解释所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复