创建好模块和包之后就要学习怎么导入(使用)他们,包和模块的调用有很多种方法,下面来一一讲解。
先在当前目录下创建好我们需要用到的一些资源。
1.调用模块方法
import test2
test2.pr('python自学网') # 调用内部代码时使用模块名加点调用函数名
print(test2.name)
2.调用包的方法
import pk1.print # 引入包中模块方法一
print(pk1.print.name)
from pk1 import print # 引入包中模块方法二
print.pr('python自学网') # 会优先执行__init__文件内容
from pk1.print import pr # 直接引入包中模块中的函数或类
pr('pythonpythonpython')
3.调用树状包
import pk1.pk2.test3 # 引入树状包中模块方法一
print(pk1.pk2.test3.name)
from pk1.pk2 import test3 # 引入树状包中模块方法而
print(test3.name)
4.同时导入多个包
import os, pk1.pk2.test3, request,error,parse
5.给包和模块起别名
import requests,error,parse as res
print(res.post)
6.注意直接导入一个包的时候不会自动导入包中的其他子包
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文件进行二次导入
7.从模块中导入资源
from pk1.pk2.test3 import pr as a, pr2 as b
a('ppp')
b()
8.批量导入模块或资源
from pk1.pk2.test3 import *
pr('ppp')
pr2()
# 也可以通过__all__来约定可使用资源(在包中的模块资源里设置)
# __all__ = ['name'] # 模块中的资源只有name可用
print(name)