day22 包

  • 包是一个文件夹,也是一个模块,只是为了区分单个文件的模块,称之为包。因为单纯的文件夹无法作为模块,文件夹内的__init__.py(写死/规定)文件才是真正需要的东西

  • 所以本质上,包就是一个带__init__.py的文件夹。

包被导入时发生的三件事

import aaa
  1. 打开aaa里__init__.py文件
  2. Python解释器解释运行 __init__.py文件,把__init__.py里的名字丢入aaa模块的名称空间
  3. 导入aaa其实就是导入__init__里的名字
  • 和模块不同的地方在于:模块是直接打开文件,而**包是打开里面的__init__.py文件**

为什么要有包

  • 模块内的函数太多了,不方便管理,需要把一个模块分成多个,但是分开后导入方式就变了。所以就有了包,可以起到一个类似于函数装饰器的作用
  • 好处:不改变模块原先的导入方式,并且简化模块开发者的管理复杂度

相对路径

from .aaa import *
  • .代表当前
  • ..代表上一级
  • ...代表上一级的上级

相对路径的好处在于:万一包的名字改变了,使用相对路径不会对包内的名字造成任何影响

  • 相对路径是相对当前文件本身而言
  • .号前面必须是一个包,不能是一个模块
  • 当文件是执行文件时,不能使用相对路径

绝对路径

  • 文件本身的路径

猜你喜欢

转载自www.cnblogs.com/lucky75/p/10994913.html