我是靠谱客的博主 重要咖啡,这篇文章主要介绍python中模块和包的区别,现在分享给大家,希望可以做个参考。

:Python中包和模块都可以被都是用import关键字进行引入的, 那么两者有什么区别呢?

模块: 一般来说, 单个py文件就叫模块(module), 调用这个模块直接使用"import 模块名"即可, 也可以使用"from 模块名 import 函数名/变量名/类名"和"from 模块名 import * "

: 当我们写了几个相近的py文件后, 想要集成起来给别人使用. 这时候就需要用到我们的包了.
包就是为了多个py文件打包起来访问的东西. 只要在包里面放一个init.py文件, 在init.py文件import包里面的模块(py文件), 就可以实现"import 包名", 实现对多个模块的调用.

下面我们举例说明一下就很容易清楚了:

  • import模块: 我们在debug文件中import module模块, 然后调用模块里面的fun函数. 两个文件在同个目录下
复制代码
1
2
3
4
# module模块 def fun(): print("hello world")
复制代码
1
2
3
4
5
# debug import module module.fun()

运行程序代码:
image.png
可以看到, 正常导入module文件并调用函数, 下面我们看看调用包.

  • “import 包”: 我们需要导入模块1, 模块2的包(packet)
    文件结构如下:
    image.png
    模块代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
# module1 def fun1(): print("我是模块1的函数") # module2 def fun2(): print("我是模块2的函数") # debug代码 import packet packet.module1.fun1()

直接import packet的话试试, 然后调用packet.module1.fun1(), 发现程序报错了, AttributeError: module ‘packet’ has no attribute ‘module1’
image.png
这是因为python没法识别由多个py文件组成的包, 所以我们需要在包里面添加一个init.py文件. 在文件里面添加

复制代码
1
2
3
import module1 import module2

文件结构如下:
image.png
重新运行代码,发现程序正常调用两个模块的内容, 也就是说成功import包
image.png
题外话: 如果不想在添加__init__.py是不是就没有办法访问module1和module2呢?
也不是, 利用在debug文件中引用时使用下面的语句也可以引用, 但它就不属于包结构了.包结构是含有__init__.py的文件夹, 而下面这种做法是属于导包中相对路径引用.

复制代码
1
2
3
import packet.module1 import packet.module2

注:
作者:Python工匠
链接:https://www.jianshu.com/p/95afe2c3d526
来源:简书

最后

以上就是重要咖啡最近收集整理的关于python中模块和包的区别的全部内容,更多相关python中模块和包内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部