'''
# 调用模块方法
import test2
test2.pr('python自学网') # 调用内部代码时使用模块名加点调用函数名
print(test2.name)
# 调用包的方法
import pk1.print # 引入包中模块方法一
print(pk1.print.name)
from pk1 import print # 引入包中模块方法二
print.pr('python自学网') # 会优先执行__init__文件内容
from pk1.print import pr # 直接引入包中模块中的函数或类
pr('pythonpythonpython')
'''
# 调用树状包
# import pk1.pk2.test3 # 引入树状包中模块方法一
# print(pk1.pk2.test3.name)
#
# from pk1.pk2 import test3 # 引入树状包中模块方法而
# print(test3.name)
# 多个包同时导入
# import os, pk1.pk2.test3, request,error,parse
# 包或模块别名
import requests,error,parse as res
print(res.post)
# 注意直接导入一个包的时候不会自动导入包中的其他子包
import pk1
print(pk1.pk2.test3.name) # AttributeError: module 'pk1' has no attribute 'pk2'
# 解决方法一
from pk1.pk2 import test3 # from后面接入包,import后面接模块
print(test3.name)
# 解决方法二
# 从上面的代码可以看到,下层包中的init文件被执行了,这时候可以借助init文件进行二次导入
# 从模块中导入资源
from pk1.pk2.test3 import pr as a, pr2 as b
a('ppp')
b()
# 批量导入模块或资源
from pk1.pk2.test3 import *
pr('ppp')
pr2()
# 也可以通过__all__来约定可使用资源(在包中的模块资源里设置)
# __all__ = ['name'] # 模块中的资源只有name可用
print(name)