分享

详解python包中的__init__.py

 静幻堂 2020-03-06
码农阿勇 2020-02-28 19:51:00

1、 包与模块,类,函数之间的关系

随着互联网和IOT的发展,我们在享受软件的强大和智能的同时,其背后与之对应的代码规模也越来越大。因此我们无法将所有的功能代码块都放在一个文件中去。于是我们根据功能进行拆分为一个个模块进行组织。当模块很多的时候,为了便于模块管理和防止模块重名,又引入了一个比模块更大的容器(包)来组织模多个块。

其实python的程序我们可以理解为有包,模块和模块中的函数和类组成。它们之间的关系如下图所示:

详解python包中的__init__.py

2、 如何创建一个包

创建一个包其实很简单,你只需要创建一个空的文件夹,然后在这个文件夹中放一个名为__init__.py这样的模块,里边什么都不用写。

这样一个包就成了。例如我在D盘跟目录下创建一个名为mypkg的包如下图所示。

详解python包中的__init__.py

注意包中的__init__.py这个模块不能少,否则就成文件夹了。其实本质上来讲包就是个文件夹。如果在pycharm中创建包更简单,直接在当前的工程名上点击右键,选择new菜单,然后选择python package即可,如下图所示。

详解python包中的__init__.py

3、 如何使用一个包中的模块

包中只有存放模块,包才有意义,在包外的主程序模块如何调用包中模块中的函数或类那?其实也是通过import关键字来实现的。

第一种导入方法如下图所示:

详解python包中的__init__.py

第二种导入方法如下图所示:

详解python包中的__init__.py

通过包名就可以有效的防止模块重名。

4、 包中的__init__.py模块有啥用

1、它的第一个作用就是用来识别它是一个包还是一个文件夹的作用。

2、可以用来做批量导入。

首先我在__init__.py中写入如下代码

详解python包中的__init__.py

然后我在test_module.py中可以不写导入random和re模块的导入语句,直接调用模块中的函数如下图所示:

详解python包中的__init__.py

其实import后跟包名,其实导入的是__init__.py模块,也就是说在导入时会自动执行包中的__init__.py模块中的代码。

3、当然也可以把__init__.py当做一个普通模块来使用,但是一般不推荐这样用。

在__init__.py中定义一个函数test_add.

详解python包中的__init__.py

然后在test_module.py中调用该包中__init__模块中的函数,如下图所示,直接通过包名来调用,从这个可以看出,包其实也是一个特殊的模块.导包就是导__init__.py模块。

详解python包中的__init__.py

以上就是勇哥给大家分享python中关于包的使用

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多