python之路--day16---包

包:

  就是一个包含有__init__.py文件的文件夹,

  创建包的目的就是为了用文件夹将文件/模块组织起来

  

  强调:

    1,python3 下,即使包下没有__init__.py文件,import包不会报错

     python2 下,一定要有__init__.py文件,否则报错

    2,创建包的目的不是为了运行,而是被导入使用,

      包的本质就是一个模块

import  aaa

首次导入包时,发生的三件事:

  1,产生一个包的名称空间

  2,执行包下的__init__.py文件,将产生的名字存放于包的名称空间中,

  3,在当前执行文件中拿到一个名字aaa,这个名字指向包的名称空间

 

# print(aaa.x) #aaa.x 就是问__init__.py要一个名字x
# print(aaa.y)

# print(aaa.m1) #aaa.m1 就是问aaa.__init__.py要一个名字m1
# aaa.m1.f1()
 1 # from aaa.bbb import m3
 2 
 3 #强调:
 4  1,在导入时带点的,点的左边必须是一个包,这是导入包特有的语法
 5  2,包内,模块直接的导入应该使用from....import....
 6  3,from....import....    import后必须是一个明确的名字,没有任何的前缀
 7       实例:
 8         from a.b.c.d.f import g.h.x
 9             这是一个错误的导入方法
10             1,f左边必须都是包
11             2,import后的名字不能有任何前缀

绝对导入和相对导入

 绝对导入:以包名起始

相对导入:用 .  或者 ..  方式为起始(只能在一个包中使用,不能用于不同目录内

# # 绝对导入
# from nb.m1 import f1,f2
# from nb.m2 import f3,f4
# from nb.m3 import f5,f6
# from nb.p1.m4 import f7


# 相对导入
from .m1 import f1,f2
from .m2 import f3,f4
from .m3 import f5,f6
from .p1.m4 import f7

原文地址:https://www.cnblogs.com/guodengjian/p/8745053.html