ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python 包

2021-12-02 16:02:24  阅读:152  来源: 互联网

标签:__ __. python py init 导入 模块


python 包

image

简介

官网解释包是一种通过使用"虚线模块名称"来构建Python的模块命名空间的方法。

看完这句话可能对包还没有太多的印象或理解,在使用pycharm中,我们也很容易发现,创建的选项很多,例如文件夹和python package,那么他们的区别就是,包下有__ init __.py 文件,所以当一个文件夹下有双下init.py文件 时,他就是包。


image


image


包的使用

如何使用包规范导入

  1. 结合模块来说,包就是多个模块功能的结合体。

  2. 需要注意的是,python3中如果包下没有 __ init __.py文件,import包不会报错,而在python2中,包下一定要有该文件,否则报错。

  3. 创建包的目的主要是为了规范导入

  • 官网是这样规范软件包结构的
sound/                          Top-level package
      __init__.py               Initialize the sound package
      formats/                  Subpackage for file format conversions
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  Subpackage for sound effects
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
      filters/                  Subpackage for filters
              __init__.py
              equalizer.py
              vocoder.py
              karaoke.py
              ...

导入包

导入包还是使用import、from/import句式

  1. 首次导入模块会发生3件事:

    • 被导入模块产生一个名称空间

    • 执行被导入的py文件,然后把执行的数据都丢到名称空间中

    • 执行文件中产生一个变量指向这个名称空间

  2. 首次导入包会发生3件事:

    • 产生一个包的名称空间
    • 执行被导入包下的 __ init __.py文件,然后把执行的数据都丢到包的名称空间中
    • 执行文件中产生一个变量指向这个包的名称空间
  3. 包也可以被认为是“模块”,可直接导入

  • 示例如下:
'''run.py'''
import eg_package


'''eg_package包'''
'''__init__.py'''
print('from __init__.py')

# 结果
from __init__.py

'''发现导入包执行了__init__.py下的输出语句'''

在python3中,导入包和导入文件夹的区别就是,导入包执行了包下的__ init __.py文件


image

标签:__,__.,python,py,init,导入,模块
来源: https://www.cnblogs.com/48xz/p/15633716.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有