我是靠谱客的博主 玩命大门,最近开发中收集的这篇文章主要介绍Python中包、模块导入解释,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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_aimport pkg.subPkg_a.mod_a1或者from pkg.subPkg_a import mod_afrom pkg.subPkg_a import mod_a1

  • 在subPkg_a对应的__init__.py文件中写import pkg.subPkg_a.mod_aimport 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中包、模块导入解释所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部