深入理解Python中__init__.py文件

 更新时间:2023年02月09日 15:39:35   作者:大作家佚名  
本文主要介绍了深入理解Python中__init__.py文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1. 简介

1.1 模块(Module)和包(Package)的概念

模块是程序,任何Python程序都可以作为模块导入。写在脚本.py文件中的函数,比如xx.py,可以在另一个模块或者脚本中通过import xx进行导入。如果要导入xx.py中的函数yy,就写成from xx import yy。可见模块可以简单的理解为一个.py文件。

包就是模块所在的目录。和文件夹不同的是,包的根目录下存在__init__.py。一个文件夹根目录下存在__init__.py那就会认为该文件夹是Python包,否则那这个文件夹就是一个普通的文件夹。

1.2 __init__.py文件简介

__init__.py文件的作用是将文件夹变为一个Python的包,Python中每个包中,都有__init__.py文件。通常__init__.py文件为空,但是我们还可以为它增加其他的功能。我们在导入一个包时,实际上是导入了它的__init__.py文件。这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。

2. __init__.py内容写法

2.1 __init__.py文件内容

以PySolid代码为例。PySolid包的目录结构如下:

.
├── grid.py
├── point.py
└── __init__.py

__init__.py内容:

# top-level functions
from pysolid.grid import (
    calc_solid_earth_tides_grid,
    plot_solid_earth_tides_grid,
)
from pysolid.point import (
    TIDES,
    calc_solid_earth_tides_point,
    plot_solid_earth_tides_point,
    plot_power_spectral_density4tides,
)

__all__ = [
    '__version__',
    'calc_solid_earth_tides_grid',
    'plot_solid_earth_tides_grid',
    'TIDES',
    'calc_solid_earth_tides_point',
    'plot_solid_earth_tides_point',
    'plot_power_spectral_density4tides',
]

在这里插入图片描述

2.2 __init__.py内容解释

从grid.py中导入两个函数:

 calc_solid_earth_tides_grid
 plot_solid_earth_tides_grid

从point.py中导入四个函数:

TIDES,
calc_solid_earth_tides_point
plot_solid_earth_tides_point
plot_power_spectral_density4tides

__init__.py中通过定义__all__变量来控制外部调用者能够调用的范围,除了以下列表中的函数,其它函数都无法被使用,类似于私有函数或变量。

__all__ = [
    '__version__',
    'calc_solid_earth_tides_grid',
    'plot_solid_earth_tides_grid',
    'TIDES',
    'calc_solid_earth_tides_point',
    'plot_solid_earth_tides_point',
    'plot_power_spectral_density4tides',
]

到此这篇关于深入理解Python中__init__.py文件的文章就介绍到这了,更多相关Python中__init__.py内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python同步两个文件夹下的内容

    python同步两个文件夹下的内容

    这篇文章主要为大家详细介绍了python同步两个文件夹下的内容,包括子文件夹,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • PyQt5之如何设置QWidget窗口背景图片问题

    PyQt5之如何设置QWidget窗口背景图片问题

    这篇文章主要介绍了PyQt5之如何设置QWidget窗口背景图片问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • python 使用三引号时容易犯的小错误

    python 使用三引号时容易犯的小错误

    这篇文章主要介绍了python 使用三引号时容易犯的小错误,帮助新手学习,避免入坑,感兴趣的朋友可以了解下
    2020-10-10
  • Python报错:ModuleNotFoundError的解决办法

    Python报错:ModuleNotFoundError的解决办法

    "ModuleNotFoundError: No module named 'xxx'"这个报错是个非常常见的报错,几乎每个python程序员都遇到过,下面这篇文章主要给大家介绍了关于Python报:ModuleNotFoundError错误的解决办法,需要的朋友可以参考下
    2022-06-06
  • Python threading模块condition原理及运行流程详解

    Python threading模块condition原理及运行流程详解

    这篇文章主要介绍了Python threading模块condition原理及运行流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Python3 selenium 实现QQ群接龙自动化功能

    Python3 selenium 实现QQ群接龙自动化功能

    这篇文章主要介绍了Python3 selenium 实现QQ群接龙自动化功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题

    Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题

    这篇文章主要介绍了Python3中内置类型bytes和str用法及byte和string之间各种编码转换问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • Django项目单字段区间查询的实现

    Django项目单字段区间查询的实现

    在Django项目中会碰到一些需求就是查询某个表中的一些字段从某日到某日的数据,你可以像在SQL中那样使用SELECT语句来查找指定字段,本文就来介绍两种方法,感兴趣的可以了解一下
    2023-10-10
  • win系统下为Python3.5安装flask-mongoengine 库

    win系统下为Python3.5安装flask-mongoengine 库

    MongoEngine 是一个用来操作 MongoDB 的 ORM 框架,如果你不知道什么是 ORM,可以参考 Flask-SQLAlchemy 一节。在 Flask 中,我们可以直接使用 MongoEngine,也可使用 Flask-MongoEngine ,它使得在 Flask 中使用 MongoEngine 变得更加简单。
    2016-12-12
  • python在不同层级目录import模块的方法

    python在不同层级目录import模块的方法

    这篇文章主要介绍了python 在不同层级目录import 模块的方法,需要的朋友可以参考下
    2016-01-01

最新评论