跳转至

包管理

包的定义

  • 包是一种通过使用: 模块名来组织 Python 模块名称空间的方式
  • 包就是一个包含有__init__.py文件的文件夹
  • 包的本质是模块的一种形式,包是用来被当做模块导入

总结

  1. 说的直白一点包就是一个文件夹,文件夹里有一个__init__.py,屁都不是

如何使用包

  • 导包就是在导包下__init__.py 文件

  • 两种方式:

    • 绝对导入
      • 以顶级包为起始(环境变量是以执行文件准备的,所有的被导入的模块或者后续被导入的文件的 sys.path都是以参照执行文件的 sys.path)
    • 相对导入
      • .表示当前文件所在的目录,..表示当前目录的上一级
      • 相对导入只能用在包内
  • 产生一个名称空间

  • 运行包下的__init__.py文件,将运行过程中产生的名字都丢到 1 的名称空间
  • 在当前执行文件的名称空间中拿到一个名字 mmm,mmm 指向 1 的名称空间

包的导入强调三点

  1. 关于包相关的导入语句也分为 import 和 from...import...两种,但是无论哪种,无论在什么位置,在导入时都必须遵循一个原则: 凡是在导入时带点的,点的左边都必须是一个包,否则非法.可以带有一连串的点,如 import 顶级包.子包.子模块,但是都必须遵循这个原则.但对于导入后,在使用时就没有这种限制了,点的左边可以是包,模块,函数,类 (他们都可以用电的方式调用自己的属性)
  2. 包 A 和包 B 下有同名模块也不会冲突,如 A.a 与 B.a 来自两个命名空间
  3. import 导入文件时,产生名称空间中的名字来源于文件,import 包,产生的名称空间的名字同样来源于文件,即包下的__init__.py,导入包本质就是在导入该文件
回到页面顶部