经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
深入理解Python中__init__.py文件
来源:jb51  时间:2023/2/10 9:17:47  对本文有异议

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包的目录结构如下:

  1. .
  2. ├── grid.py
  3. ├── point.py
  4. └── __init__.py

__init__.py内容:

  1. # top-level functions
  2. from pysolid.grid import (
  3. calc_solid_earth_tides_grid,
  4. plot_solid_earth_tides_grid,
  5. )
  6. from pysolid.point import (
  7. TIDES,
  8. calc_solid_earth_tides_point,
  9. plot_solid_earth_tides_point,
  10. plot_power_spectral_density4tides,
  11. )
  12.  
  13. __all__ = [
  14. '__version__',
  15. 'calc_solid_earth_tides_grid',
  16. 'plot_solid_earth_tides_grid',
  17. 'TIDES',
  18. 'calc_solid_earth_tides_point',
  19. 'plot_solid_earth_tides_point',
  20. 'plot_power_spectral_density4tides',
  21. ]
  22.  

在这里插入图片描述

2.2 __init__.py内容解释

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

  1. calc_solid_earth_tides_grid
  2. plot_solid_earth_tides_grid

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

  1. TIDES,
  2. calc_solid_earth_tides_point
  3. plot_solid_earth_tides_point
  4. plot_power_spectral_density4tides

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

  1. __all__ = [
  2. '__version__',
  3. 'calc_solid_earth_tides_grid',
  4. 'plot_solid_earth_tides_grid',
  5. 'TIDES',
  6. 'calc_solid_earth_tides_point',
  7. 'plot_solid_earth_tides_point',
  8. 'plot_power_spectral_density4tides',
  9. ]

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号