python包自我理解

python包自我理解

1、python包

​ 文件夹下有__init__.py文件,这个文件夹就是一个包,(.py文件为模块)

​ 可以通过imort包名(也就是文件夹名称)导入包,当执行import包名时python会加载__init__.py文件

​ 可以在__init__.py文件指定导入的模块,那样在导包时就会导入指定模块

​ 包可以嵌套,包下面还有包

__all__指定包里导入模块,如果from XX imoirt *就导入__all__里面全部模块

注意,使用 from package import item 时,item 可以是包的子模块(或子包),也可以是包中定义的函数、类或变量等其他名称。import 语句首先测试包中是否定义了 item;如果未在包中定义,则假定 item 是模块,并尝试加载。如果找不到 item,则触发 ImportError 异常。

相反,使用 import item.subitem.subsubitem 句法时,除最后一项外,每个 item 都必须是包;最后一项可以是模块或包,但不能是上一项中定义的类、函数或变量。

2、测试代码

#目录
>abcd
  >a
    __init__.py
    a.py
  >b
    b.py
  __init__.py
  test.py
testimport.py
# /abcd/a/__init__.py
from .a import AA
# /abcd/a/a.py
def AA():
    print('AA')
# /abcd/b/b.py
def BB():
    print('BB')
# /abcd/__init__.py
from .test import TestA

__all__ = ['a','b']
# /abcd/test.py
def TestA():
    print('TestA')

if __name__ == '__main__':
    TestA()
# /testimport.py
import abcd

abcd.TestA()
from abcd import *
a.AA()
# b.BB()    #这个找不到的
print(dir(a))
posted @ 2021-06-07 10:10  左岸丶  阅读(57)  评论(0编辑  收藏  举报